我有这样的文件:
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" }
我想运行 map-reduce 查询以返回按日期分组的结果列表,其中包含每个订单的员工事件计数。
在这种情况下,Mick 在 1/1 的一个订单中有 2 个事件。在 11 月 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 }
由于 Mick 是唯一一位在单个订单上在单个日期发生多个事件的员工,因此结果仅返回了一个员工在某个日期的一个订单上有多个事件的计数。
在 .NET 中使用 LINQ 编写这个 map-reduce Raven 查询的最佳方法是什么?
谢谢