没有$ match的聚合查询

时间:2016-06-13 15:52:58

标签: mongodb mongodb-aggregation

我有一个集合,其中来自不同集合的唯一文档可以反复出现(在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
    }
}

usersitems每个都有自己的收藏品。

1 个答案:

答案 0 :(得分:1)

更改行

_id:'item.id'

_id:'$item.id' 

目前,您按常量" item.id'进行分组。因此,您只得到一份文件。