如何在mongodb中聚合子文档
本文关键字:文档 mongodb | 更新日期: 2023-09-27 18:24:00
我有以下集合:
{
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查询(或者更好地使用mongodbc#驱动程序)做到这一点?
db.test.aggregate(
{ $unwind: "$jobs" },
{ $group:
{ _id: '$jobs.category', total : { '$sum' : 1 } }
},
{ $project: { category : '$_id', _id:0, total:1 } }
).toArray()
这产生了与您的问题完全相同的结果。
- 展开类别数组将生成五个文档
- 对于每个类别,计算金额
- $group步骤中的_id被重命名为category
- 转换为数组的结果集
db.getCollection('test').aggregate(
{ $unwind: "$jobs" },
{ $group:
{ _id: '$jobs.category', total : { '$sum' : 1 } }
}
)