我想按日期排序数据,然后在另一个字段组。 它不适合我。Mongo聚合框架,排序,然后组不工作
我想回答的问题是:选择最近的独特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'}})
我在圈子首先进行比赛, 然后排序上的日期, 然后在CID
我得到的结果是一组:
我的分析:匹配或按日期排序之前,该数据是:
"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
}
什么查询能解决我的问题?
为什么当前查询不适合我?
您的管道参数“聚合”需要放在数组中或作为独立的对象而不是一个大对象传递。你的问题是关于'cid'上的分组,但是命令是在'$ date'上分组的。 – JohnnyHK
这是一个错字。它应该是$组:{_id:'$ cid'} – ben39