首页 文章

MongoDB中的聚合,使用展开

提问于
浏览
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}

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

相关问题