解析一个困难的 MongoDB 字段(使用多级数组)
Parsing a difficult MongoDB field (with multi-level array)
专家您好,
我正在尝试解析 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
、param1
和 param2
提取 fieldname/value,希望之后总结 param1
和 param2
值。
但是,当我尝试使用第二个 $unwind
时,我收到那些具有“空”值的字段。
我该如何正确解析这个字段?
$set
使用 $objectToArray
将城市更改为数组
$unwind
展开城市数组
$group
按 account_id 和 cityname 分组然后总结 param1 和 param2
(只能按account_id或城市名分组,去掉其中一个即可)
汇总
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"
}
}
}
])
专家您好,
我正在尝试解析 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
、param1
和 param2
提取 fieldname/value,希望之后总结 param1
和 param2
值。
但是,当我尝试使用第二个 $unwind
时,我收到那些具有“空”值的字段。
我该如何正确解析这个字段?
$set
使用$objectToArray
将城市更改为数组
$unwind
展开城市数组$group
按 account_id 和 cityname 分组然后总结 param1 和 param2 (只能按account_id或城市名分组,去掉其中一个即可)
汇总
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"
}
}
}
])