MongoDB中的聚合,使用展开

时间:2013-05-24 15:04:36

标签: mongodb

我需要汇总来自这样的记录的所有标签:

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}}}   )

我得到了:

  

{“result”:[],“ok”:1}

1 个答案:

答案 0 :(得分: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 } } }
])