0

我需要从这样的记录中聚合所有标签:

https://gist.github.com/sbassi/5642925

(此片段中有 2 条示例记录)并按大小对它们进行排序(首先是出现频率更高的标签)。但我不想考虑具有特定“user_id”的数据(比如说,2、3、6 和 12)。

这是我的尝试(只是聚合,没有过滤和排序):

db.user_library.aggregate( { $unwind : "$annotations.data.tags" }, { $group : { _id : "$annotations.data.tags" ,totalTag : { $sum : 1 } } }

我得到了:

{“结果”:[],“确定”:1}

4

1 回答 1

1

现在你不能展开嵌套在另一个数组中的数组。请参阅SERVER-6436

考虑以不同的方式构造数据,使用包含该文档的所有标签的数组字段,或者可能展开注释,然后在堆叠展开中展开 annotations.data.tags,如下所示:

db.user_library.aggregate([
    { $project: { 'annotations.data.tags': 1 } },
    { $unwind: '$annotations' },
    { $unwind: '$annotations.data.tags' },
    { $group: { _id: '$annotations.data.tags', totalTag: { $sum: 1 } } }
])
于 2013-05-24T17:36:56.143 回答