聚合管道中的$ group变慢

时间:2018-07-23 21:34:16

标签: mongodb mongodb-query aggregation-framework

我有这样的查询

db.collection1.aggregate([
{ "$match" : { "DateTime" : { "$gte" : ISODate("2018-07-13T20:27:28Z"), 
        "$lte" : ISODate("2018-07-23T20:27:28Z") } } }, 
{ "$match" : { "EndpointId" : { "$in" : [NUUID("abb6a606-2af1-403b-ac13-73705b7b4991"), 
    NUUID("ea8bee34-9d0c-472c-addb-460c8e79f77c")] } } },
{ "$group" : { "_id" : { "EndpointId" : "$EndpointId", 
    "TagUid" : "$TagUid", "Type" : "$Type" }, "Count" : { "$sum" : 1 } } }])

$ match运行得很快,但是$ group太慢了。 2 $ match的结果是900万个文档,并且$ group运行了它。我试图在$ group之前使用$ sort,但是结果很糟糕。 我的数据结构就是这样

{
    "_id" : NUUID("f2360f9f-e6bd-46fb-ae39-6f41eba01287"),
    "TagUid" : "6D22597B-2CFD-49C6-A8E7-3402A3AF5C5A",
    "DateTime" : ISODate("2018-07-16T23:00:59.841Z"),
    "EndpointId" : NUUID("ea8bee34-9d0c-472c-addb-460c8e79f77c"),
    "EndpointDataId" : NUUID("85c3c45d-9cdd-49f2-b7be-da9809274fab"),
    "Type" : 13,
    "Value" : NumberDecimal("2862.0")
}

如何改善此查询中的$ group?还是有更好的方法编写此查询?

0 个答案:

没有答案