繁体   English   中英

如何在mongodb中聚合子文档?

[英]how to aggregate sub document in mongodb?

我有以下收藏:

{
    name: "c1",
    jobs: [{
        category: "a"
    }, {
        category: "a"
    },{
        category: "b"
    }]
}
{
    name: "c2",
    jobs: [{
        category: "b"
    }, {
        category: "c"
    }]
}

我想得到以下结果:

[{
    category: "a",
    total: 2
}, {
    category: "b",
    total: 2
}, {
    category: "c",
    total: 1
}]

我如何使用 mongodb 查询(或者使用 mongodb c# 驱动程序更好)来做到这一点?

db.test.aggregate( 
    { $unwind: "$jobs" }, 
    { $group: 
        { _id: '$jobs.category', total : { '$sum' : 1 } } 
    },
    { $project: { category : '$_id', _id:0, total:1 } }     
).toArray()

这将产生与您的问题完全相同的结果。

  1. 通过展开类别数组将生成五个文档
  2. 对于每个类别,计算金额
  3. $group 步骤中的 _id 被重命名为 category
  4. 结果集转换成数组
db.getCollection('test').aggregate( 
    { $unwind: "$jobs" }, 
    { $group: 
        { _id: '$jobs.category', total : { '$sum' : 1 } } 
    } 
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM