MST

星途 面试题库

面试题:MongoDB聚合框架中如何处理嵌套文档的聚合

假设有一个集合,其中文档包含嵌套数组结构的字段,例如`{name: 'John', hobbies: [{name: 'Reading', frequency: 3}, {name: 'Swimming', frequency: 2}]}`, 现在需要统计每种爱好的总出现频率,使用MongoDB聚合框架实现该需求,阐述实现思路并写出具体的聚合管道代码。
39.7万 热度难度
数据库MongoDB

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 展开数组字段:使用$unwind操作符将hobbies数组展开,使得每个爱好成为一个独立的文档。
  2. 分组统计:使用$group操作符,按照爱好的名称进行分组,并对每组内的frequency进行累加。

聚合管道代码

[
    {
        $unwind: "$hobbies"
    },
    {
        $group: {
            _id: "$hobbies.name",
            totalFrequency: { $sum: "$hobbies.frequency" }
        }
    }
]