我已經文檔存儲到MongoDB的是這樣的:集團通過一天多日期字段
{
"_id" : "XBpNKbdGSgGfnC2MJ",
"po" : 72134185,
"machine" : 40940,
"location" : "02A01",
"inDate" : ISODate("2017-07-19T06:10:13.059Z"),
"requestDate" : ISODate("2017-07-19T06:17:04.901Z"),
"outDate" : ISODate("2017-07-19T06:30:34Z")
}
而且我想給的總和,按天,銦酸和過時的。
我可以通過inDate
一天檢索雙方的文件的總和,另一方面,文件的總和由outDate
,但我想每個的總和。
目前,我用這個管道:
$group: {
_id: {
yearA: { $year: '$inDate' },
monthA: { $month: '$inDate' },
dayA: { $dayOfMonth: '$inDate' },
},
count: { $sum: 1 },
},
,我給:
{ "_id" : { "year" : 2017, "month" : 7, "day" : 24 }, "count" : 1 }
{ "_id" : { "year" : 2017, "month" : 7, "day" : 21 }, "count" : 11 }
{ "_id" : { "year" : 2017, "month" : 7, "day" : 19 }, "count" : 20 }
但我想,如果有可能:
{ "_id" : { "year" : 2017, "month" : 7, "day" : 24 }, "countIn" : 1, "countOut" : 4 }
{ "_id" : { "year" : 2017, "month" : 7, "day" : 21 }, "countIn" : 11, "countOut" : 23 }
{ "_id" : { "year" : 2017, "month" : 7, "day" : 19 }, "countIn" : 20, "countOut" : 18 }
任何想法? 非常感謝:-)
這裏的最佳做法是單獨運行每個聚合,然後在後處理中「結合」結果。運行「並行」進程並基本上「共同」輸出密鑰是相當簡單和常見的做法。運行「並行」是您的更好選擇,根據語言選擇和環境的不同處理方式以及整體結果的大小。因此理想情況下使用nodejs或其他可以在「異步」問題中並行執行查詢的內容,而不是分別單獨封鎖查詢。 –