Ich habe Dokumente in meinem MongoDB-Instanz, die Splitting und Aggregieren Zählung von Arrays
{
...
regions: ["Region-West", "Region-HC"],
care_levels: ["Memory Care"],
...
}
{
...
regions: ["Region-West", "Region-SC"],
care_levels: ["Physical Rehab"],
...
}
{
...
regions: ["Region-East", "Region-NC"],
care_levels: ["Physical Rehab"],
...
}
Die Regionen wie folgt aussehen
und Pflegestufen sind sowohl ein Array von Strings. Ich möchte eine Zählung von Dokumenten durchführen, die durch einen bestimmten Satz von Regionen und Care_levels zugeordnet sind. Zum Beispiel -Region-East, Physical Rehab => 20
Region-East, Memory Care => 20
Region-West, Memory Care => 30
Ich verwende die folgende Abfrage
db.incidents.aggregate([
{$match:
{"care_levels": { $size: 1, $in: ["Memory Care", "Physical Rehab"] }},
},
{ "$group": {
"_id": {
"regions": "$regions",
"care_levels": "$care_levels",
},
"incidentCount": { "$sum": 1 }
}},
])
und ich bekomme das Ergebnis als
{ "_id" : { "regions" : [ "Region-East", "Region-HC" ], "care_levels" : [ "Memory Care" ] }, "incidentCount" : 2409 }
{ "_id" : { "regions" : [ "Region-East", "Region-HC" ], "care_levels" : [ "Physical Rehab" ] }, "incidentCount" : 2459 }
{ "_id" : { "regions" : [ "Region-East", "Region-SC" ], "care_levels" : [ "Memory Care" ] }, "incidentCount" : 2504 }
{ "_id" : { "regions" : [ "Region-West", "Region-HC" ], "care_levels" : [ "Memory Care" ] }, "incidentCount" : 2382 }
{ "_id" : { "regions" : [ "Region-West", "Region-HC" ], "care_levels" : [ "Physical Rehab" ] }, "incidentCount" : 2475 }
{ "_id" : { "regions" : [ "Region-East", "Region-SC" ], "care_levels" : [ "Physical Rehab" ] }, "incidentCount" : 2478 }
{ "_id" : { "regions" : [ "Region-South", "Region-HC" ], "care_levels" : [ "Physical Rehab" ] }, "incidentCount" : 2405 }
{ "_id" : { "regions" : [ "Region-West", "Region-SC" ], "care_levels" : [ "Memory Care" ] }, "incidentCount" : 2490 }
{ "_id" : { "regions" : [ "Region-West", "Region-SC" ], "care_levels" : [ "Physical Rehab" ] }, "incidentCount" : 2433 }
{ "_id" : { "regions" : [ "Region-South", "Region-HC" ], "care_levels" : [ "Memory Care" ] }, "incidentCount" : 2465 }
ich die Bereiche herausfiltern möchte, dass ich nicht über egal . In diesem Fall möchte ich nicht die Aufteilung für Region-SC und Region-HC und die Zählung der Region-West/Ost/Süd sollte die Summe der Werte aus der Region-SC und Region-HC-Split sein.
Insbesondere in diesem Fall möchte ich die Werte
Region-East, Memory Care => (2409 + 2504)
Region-West, Memory Care => (2382 + 2490)
Wie kann ich dies durch weitere Aggregation erreichen?