我有一個文件是這樣的:RavenDB - MapReduce的複雜聚合
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日的每個訂單上都有一個員工單獨的活動。所以,我需要結果的地圖功能看起來像:
{ 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 }
由於米克是有結果的日期在訂單上只有一個返回員工與多個事件的計數單個訂單上一個日期多個事件的唯一的員工。
什麼是最好的方式來寫這張地圖 - 減少在LINQ中使用.NET的Raven查詢?
感謝
這兩個單獨的訂單文件?或者一個有兩個訂單的文檔?此外,日期將永遠不會按照您展示的方式進入文檔。你在課堂中使用DateTime屬性嗎?請出示您的客戶端代碼,或者表明您是否正在進行直接http呼叫。謝謝。 –
是的。這是兩個單獨的訂單文件。這些日期作爲時間戳字段存儲在RavenDB JSON文檔中,例如, 「2012-11-08T02:32:13.5549981」並反序列化爲實體類對象中的日期字段。我不認爲客戶端代碼在這裏是相關的,這純粹是一個後端計算問題。我只需要一個使用RavenDB索引的純粹的map-reduce解決方案,使用.NET中的LINQ –