【发布时间】:2023-03-03 14:36:01
【问题描述】:
我是 MongoDB 世界的新手。我试图弄清楚如何计算分配给父组织的子组织的数量。我有具有这种一般结构的文档:
{
"_id" : "001",
"parentOrganization" : {
"organizationId" : "pOrg1"
},
"childOrganization" : {
"organizationId" : "cOrg1"
}
},
{
"_id" : "002",
"parentOrganization" : {
"organizationId" : "pOrg1"
},
"childOrganization" : {
"organizationId" : "cOrg2"
}
},
{
"_id" : "003",
"parentOrganization" : {
"organizationId" : "pOrg2"
},
"childOrganization" : {
"organizationId" : "cOrg3"
}
}
每个文档都有一个 parentOrganization 和一个关联的 childOrganization。可能有多个文档具有相同的 parentOrganization,但 childOrganizations 不同。也可能有多个文档具有相同的父/子关系。此外,甚至可能存在子组织可能与多个父组织关联的情况。
我正在尝试按 parentOrganization 分组,然后计算与每个 parentOrganization 关联的唯一 childOrganization 的数量,并显示唯一 ID。
我已经尝试使用具有 $match 和 $group 的聚合框架,但我仍然没有进入子组织部分来计算它们。这是我目前正在尝试的:
var s1 = {$match: {"parentOrganization.organizationId": {$exists: true}}};
var s2 = {$group: {_id: "$parentOrganization.organizationId", count: {$sum: "$childOrganization.organizationId"}}};
db.collection.aggregate(s1, s2);
我的结果返回了 parentOrganization,但我的 $sum 没有返回关联的 childOrganizations 的数量:
/* 1 */ { “_id”:“pOrg1”, “计数”:0 }
/* 2 */ { “_id”:“pOrg2”, “计数”:0 }
我觉得这比我目前有限的知识所能获得的要复杂一些。我在此查询中遗漏了哪些详细信息?
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework