【发布时间】:2015-11-28 09:35:27
【问题描述】:
我需要一些按时间排序并按电话号码分组的用户数据。 使用 $match,然后是 $sort,然后是 $group。 该查询在 mongo 上讨论了很多时间。 如果我删除任何一个 $sort 或 $group 条件,查询将在毫秒内执行。
我使用的查询是
db.buyerResponse.aggregate([
{ $match: { superProfileId: 321956, responseDate: { $gte: new Date(1432739021103), $lt: new Date(1448636621103) } } },
{ $sort: { responseDate: -1 } },
{ $group: { _id: "$phone", responseId: { $first: "$_id" } }}, { $skip: 0 },
{ $limit: 50 }
])
【问题讨论】:
-
1500万个文档的集合需要11秒。如果我去除污渍,它也会在大约 100 毫秒内给出结果。上面查询的所有字段也都被索引了。
-
展示给我们看!您可能对一个或多个索引有问题(以防您在交叉路口下注)。
-
先排序再匹配需要多少时间?
-
@MarkusWMahlberg superProfileId、responseDate 和 phone 都被索引了
-
请@Amar 显示我们。单个还是多个?命令?只需显示我们。
标签: mongodb aggregation-framework