我需要为按时间排序的用户提供一些数据,并按电话号码分组。 使用$ 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 }
])
答案 0 :(得分:2)
您应该在排序前进行分组。分组后,要排序的记录要少得多。通常,您几乎总是想要排序。