我期望通过最小化要放松的记录数来优化MongoDB性能。Mongodb展开和匹配VS匹配和解开
我不喜欢:
unwind(injectionRecords),
match("machineID" : "machine1"),
count(counter)
,因为庞大的数据,但放松操作需要花费大量的时间,然后从开卷相匹配。 它展开所有4条记录,然后从结果中匹配machineID,并给我数。
相反,我想这样做:
match("machineID": "machine1"),
unwind(injectionRecords)
count(counter)
因此,它会匹配具有设备ID记录和放松的只有2个而不是4个,并给了我它的计数。
这可能吗?我怎样才能做到这一点?
下面是样本文档,
{
"_id" : ObjectId("5981c24b90a7c215e4f166dd"),
"machineID" : "machine1",
"injectionRecords" : [
{
"startTime" : ISODate("2017-08-02T17:45:04.779+05:30"),
"endTime" : ISODate("2017-08-02T17:45:07.763+05:30"),
"counter" : 1
},
{
"startTime" : ISODate("2017-08-02T17:45:24.417+05:30"),
"endTime" : ISODate("2017-08-02T17:45:27.402+05:30"),
"counter" : 2
}
]
},
{
"_id" : ObjectId("5981c24b90a7c215e4f166de"),
"machineID" : "machine2",
"injectionRecords" : [
{
"startTime" : ISODate("2017-08-02T17:46:04.779+05:30"),
"endTime" : ISODate("2017-08-02T17:46:07.763+05:30"),
"counter" : 1
},
{
"startTime" : ISODate("2017-08-02T17:46:24.417+05:30"),
"endTime" : ISODate("2017-08-02T17:46:27.402+05:30"),
"counter" : 2
}
]
}
当然,可以通过(1)匹配然后(2)展开来订购聚合管道,因此对于您的问题的答案可能取决于您的特定匹配**是否实际适用于解开数据之前的数据。你可以更新你的问题,包括一个示例文档和你目前的放松和比赛阶段? – glytching
@ glitch可以发布优化查询我的问题? – Pratikmr97
@RicardoRocha请勿将代码格式设置为像'mongodb'这样的单词。 [更多信息请看这里](https://meta.stackoverflow.com/a/254995/4244993) – jmattheis