專家您好,
我正在嘗試決議 MongoDB 集合行,在使用之后$unwind,剩余的欄位之一如下所示:
[
{
"account_id": "1234",
"cities": {
"cityname1": {
"param1": 1,
"param2": 2
}
}
},
{
"account_id": "2345",
"cities": {
"cityname2": {
"param1": 3,
"param2": 3
}
}
},
{
"account_id": "3456",
"cities": {
"cityname3": {
"param1": 8,
"param2": 6
}
}
}
]
現在,我想繼續決議這個欄位,這樣我就可以提取account_id、forparam1和 for的欄位名/值param2,希望然后總結param1和param2值。但是,當我嘗試使用第二個時$unwind,我收到那些值為“空”的欄位。
我應該如何正確決議這個欄位?
uj5u.com熱心網友回復:
$set通過使用將城市更改為陣列$objectToArray$unwind展開城市陣列$group按 account_id 和 cityname 分組然后總結 param1 和 param2 (您只能按 account_id 或 cityname 分組,只需洗掉其中一個)
總計的
db.collection.aggregate([
{
"$set": {
cities: {
"$objectToArray": "$cities"
}
}
},
{
"$unwind": "$cities"
},
{
"$group": {
"_id": {
account_id: "$account_id",
"cityname": "$cities.k"
},
"sumOfParam1": {
"$sum": "$cities.v.param1"
},
"sumOfParam2": {
"$sum": "$cities.v.param2"
}
}
}
])
mongoplayground
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/357787.html
