9

次のようなコレクションがあります。

{
    "_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 関数を使用したほうがよいでしょうか?

4

2 に答える 2