我需要汇总来自这样的记录的所有标签:
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}
答案 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 } } }
])