我正在try 先按日期排序数据,然后在另一个字段上分组.
The question I am trying to answer is: Select the most recent distinct cid?
鉴于这些数据:
db.summary.save({"lid" : 5, "date" : 5, "cid" : 2, "circles" : [ 2 ] })
db.summary.save({"lid" : 2, "date" : 2, "cid" : 1, "circles" : [ 2 ] })
db.summary.save({"lid" : 4, "date" : 0, "cid" : 3, "circles" : [ 2 ] })
db.summary.save({"lid" : 3, "date" : 3, "cid" : 2, "circles" : [ 2 ] })
db.summary.save({"lid" : 1, "date" : 1, "cid" : 1, "circles" : [ 2 ] })
db.summary.aggregate( {$match :{circles: 2}, $sort: {date: -1}, $group: {_id: '$cid'}} )
我先在圆圈上做一场比赛,
我得到的结果是:
{
"result" : [
{
"_id" : 3
},
{
"_id" : 1
},
{
"_id" : 2
}
],
"ok" : 1
}
Here is my analysis:
在按日期进行匹配或排序之前,数据为:
"lid" : 5, "date" : 5, "cid" : 2
"lid" : 2, "date" : 2, "cid" : 1
"lid" : 4, "date" : 0, "cid" : 3
"lid" : 3, "date" : 3, "cid" : 2
"lid" : 1, "date" : 1, "cid" : 1
按日期排序后,数据集将为:
"lid" : 5, "date" : 5, "cid" : 2
"lid" : 3, "date" : 3, "cid" : 2
"lid" : 2, "date" : 2, "cid" : 1
"lid" : 1, "date" : 1, "cid" : 1
"lid" : 4, "date" : 0, "cid" : 3
所以分组后,我预期的结果是:
{
"result" : [
{
"_id" : 2
},
{
"_id" : 1
},
{
"_id" : 3
}
],
"ok" : 1
}
什么问题解决了我的问题?
为什么当前的查询对我不起作用?