我想按日期排序數據,然後在另一個字段組。 它不適合我。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