MongoDB文档中所有数组大小的总和
在MongoDB上,我有这样一个集合:-MongoDB文档中所有数组大小的总和,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,在MongoDB上,我有这样一个集合:- { org: "org", departments: [ { name: "abc", employees: [ { name: "number1" }, { name: "number2" }, { name: "number3" }, ] }, { name: "mno", employees:
{
org: "org",
departments: [
{
name: "abc",
employees: [
{ name: "number1" },
{ name: "number2" },
{ name: "number3" },
]
},
{
name: "mno",
employees: [
{ name: "number4" },
{ name: "number5" }
]
},
{
name: "xyz",
employees: [
{ name: "number6" },
{ name: "number7" }
]
}
]
},{
org: "xyz"....
}
如何使用聚合查找“组织”中的员工总数?
预期结果
{
组织:“组织”,
员工总数:7人
},
{
组织:“xyz”,
员工总数:x
},..您可以使用来获取内部数组的长度,并对这些长度求和:
db.collection.aggregate([
{
$project: {
total_employees: {
$reduce: {
input: "$departments",
initialValue: 0,
in: { $add: [ "$$value", { $size: "$$this.employees" } ] }
}
}
}
}
])
通过使用聚合在部门
数组上循环,可以找到数组的(长度),然后可以将所有数组值组合在一起
db.collection.aggregate([
{ "$project": {
"total_employees": {
"$sum": {
"$map": {
"input": "$departments",
"in": { "$size": "$$this.employees" }
}
}
}
}}
])
[
{
"_id": ObjectId("5a934e000102030405000000"),
"total_employees": 7
}
]