我是新來的MongoDB世界。我想弄清楚如何計算分配給上級組織的兒童組織數量。我有這個一般結構文件:我需要計算在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,但我的$總和沒有返回相關childOrganizations數量:
/* 1 */ { 「_id」: 「pOrg1」, 「計數」:0 }
/* 2 */ { 「_id」: 「pOrg2」, 「計數」:0 }
我得到的感覺是更復雜一點而不是我目前有限的知識。我在這個查詢中遺漏了哪些細節?