次のようなコレクションがあります。
{
"_id": "id0",
"name": "...",
"saved_things": [
{ ... },
{ ... },
{ ... },
]
}
{
"_id": "id1",
"name": "...",
"saved_things": [
{ ... },
]
}
{
"_id": "id2",
"name": "...",
"saved_things": [
{ ... },
]
}
等...
mongodb の集計フレームワークを使用して、特定の数のsaved_things
. たとえば、上記のデータセットの場合、次のようなものが返されます。
{ "_id": 1, "count": 2 },
{ "_id": 3, "count": 1 }
以下のような集計関数のさまざまな組み合わせを試しましたが、どれも正しく機能しませんでした。(私はこれについてひどく間違っていると感じています。)
collection.aggregate([
{ $unwind: "$saved_things" },
{ $group: "$_id", count: { $sum: 1 } } },
{ $group: "$count", number: { $sum: 1 } } },
{ $sort: { number: -1 } }
], function(err, result) {
console.log(result);
});
これは Mongo の集約フレームワークで可能ですか、それとも map reduce 関数を使用したほうがよいでしょうか?