У меня есть такой документ:
order : 1
event : { timestamp: 1/1/2012, employeeName: "mick" },
event : { timestamp: 1/1/2012, employeeName: "mick" },
event : { timestamp: 1/2/2012, employeeName: "rick" },
event : { timestamp: 1/3/2012, employeeName: "mick" }
order : 2
event : { timestamp: 1/2/2012, employeeName: "mick" },
event : { timestamp: 1/2/2012, employeeName: "rick" }
Я хочу запустить запрос на уменьшение карты, чтобы вернуть список результатов, сгруппированных по дате, с количеством событий сотрудников на заказ.
В данном случае у Мика было 2 события 1/1 в одном заказе. Все остальные дни было по одному событию со стороны сотрудника по каждому заказу 2 и 3 ноября. Поэтому мне нужна функция MAP с результатами, которые будут выглядеть так:
{ orderId: 1, date: 1/1/2012, employee: "mick", orderEventsCount: 2 },
{ orderId: 1, date: 1/2/2012, employee: "rick", orderEventsCount: 1 },
{ orderId: 2, date: 1/2/2012, employee: "mick", orderEventsCount: 1 },
{ orderId: 2, date: 1/2/2012, employee: "rick", orderEventsCount: 1 },
{ orderId: 1, date: 1/3/2012, employee: "mick", orderEventsCount: 1 }
Затем мне нужна функция REDUCE, которая будет принимать эти результаты и группировать только по дате и возвращать количество сотрудников в день с несколькими событиями в одном заказе:
{ date: 1/1/2012, multipleEventsPerOrdercount: 1 },
{ date: 1/2/2012, multipleEventsPerOrdercount: 0 },
{ date: 1/3/2012, multipleEventsPerOrdercount: 0 }
Поскольку Мик был единственным сотрудником, у которого было несколько событий в одну дату в одном заказе, результат вернул только количество одного сотрудника с несколькими событиями в заказе на дату.
Как лучше всего написать этот запрос Raven с уменьшением карты, используя LINQ в .NET?
Спасибо