1

itemユーザーが共有する量に応じて、別のコレクションの一意のドキュメントが何度も表示されるコレクションがあります (以下の例を参照)。最も共有されているドキュメントを見つける集計クエリを作成したいと考えています。私は特定の基準に一致していないため、 $match は必要ありません。最も共有されているものを照会しているだけです。今私は持っています:

db.stories.aggregate(
    {
        $group: {
            _id:'item.id', 
            'item': { 
                $first: '$item'
            }, 
            'total': { 
                $sum: 1
            }
        }
    }
);

ただし、これは1つの結果しか返しません。簡単なfindクエリを実行する必要があるだけかもしれませんが、結果を集計して、各結果に項目があり、合計がコレクションに表示された回数になるようにしたいと思います。

ストーリー コレクション内のドキュメントの例:

{
    _id: ObjectId('...'),
    user: {
        id: ObjectId('...'),
        propertyA: ...,
        propertyB: ...,
        etc
    },
    item: {
        id: ObjectId('...'),
        propertyA: ...,
        propertyB: ...,
        etc
    }
}

usersそしてitemsそれぞれが独自のコレクションも持っています。

4

1 に答える 1