我已经文档存储到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或其他可以在“异步”问题中并行执行查询的内容,而不是分别单独封锁查询。 –