我有一个集合,其中来自不同集合的唯一文档可以反复出现(在item
下面的示例中),具体取决于用户共享它们的程度。我想创建一个查找最多共享文档的聚合查询。没有必要匹配,因为我没有匹配某个标准,我只是查询最多共享。现在我有:
db.stories.aggregate(
{
$group: {
_id:'item.id',
'item': {
$first: '$item'
},
'total': {
$sum: 1
}
}
}
);
但是这只会返回1个结果。它发生在我身上我可能只需要做一个简单的find
查询,但我希望聚合结果,这样每个结果都有项目,总数是它在集合中出现的次数。 / p>
故事集中的文档示例:
{
_id: ObjectId('...'),
user: {
id: ObjectId('...'),
propertyA: ...,
propertyB: ...,
etc
},
item: {
id: ObjectId('...'),
propertyA: ...,
propertyB: ...,
etc
}
}
users
和items
每个都有自己的收藏品。
答案 0 :(得分:1)
更改行
_id:'item.id'
到
_id:'$item.id'
目前,您按常量" item.id'进行分组。因此,您只得到一份文件。