1
私は、ユーザーが共有する度合いに応じて、異なるコレクションの一意のドキュメントが繰り返し表示されるコレクションを持っています(例:item
以下)。私は、最も共有されたドキュメントを見つける集約クエリを作成したいと思います。私は特定の基準に合っていないので、$一致は必要ありません。私は最も多くの人に問い合わせます。今、私は持っている:
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
それぞれが同様に自分のコレクションを持っています。
入力ドキュメントの例を追加できますか? – profesor79
[OK]は、ストーリーコレクションのサンプルドキュメントを追加しました。 – inorganik
'item.id'の前に' $ 'をつける必要があります。 '$ id'の' $ id'を '_id: '$ item.id'に変更してください – styvane