我有这样的查询
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?还是有更好的方法编写此查询?