データを日付順にソートしてから別のフィールドにグループ化しようとしています。 それは私には役に立たない。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
上のグループの結果、私は取得しています:
をこのデータを与え
{
"result" : [
{
"_id" : 3
},
{
"_id" : 1
},
{
"_id" : 2
}
],
"ok" : 1
}
ここに私の分析です:
マッチングや日付でソートする前に、データがあった。
"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
}
どのような質問が私の問題を解決しますか?
なぜ現在のクエリが機能しないのですか?
'aggregate'へのあなたのパイプラインパラメータは配列に入れられるか、大きなオブジェクトではなく独立したオブジェクトとして渡される必要があります。そしてあなたの質問は 'cid'のグループ化について話しますが、コマンドは' $ date'をグループ化しています。 – JohnnyHK
それはタイプミスでした。 $ group:{_id: '$ cid'} – ben39