我有一个看起来像这样的对象
{
“_ID” : {
“ import_type”:“ MANUAL_UPLOAD”,
“供应商”:“ jabino.de”,
“ unit_price”:“ 0”
},
“状态”:[
{
“ status”:“ DUPLICATED”,
“计数”:14
},
{
“状态”:“黑名单”,
“计数”:2
},
{
“状态”:“可用”,
“数量”:2239
},
{
“状态”:“ INVALID_EMAIL_ADDRESS”,
“计数”:1
},
{
“ status”:“ DUPLICATED”,
“计数”:14
},
{
“状态”:“黑名单”,
“计数”:2
},
{
“状态”:“可用”,
“数量”:2239
},
{
“状态”:“ INVALID_EMAIL_ADDRESS”,
“计数”:1
}
]
}
如何汇总状态相同的 statuss
数组中的所有 count
,而又不会丢失 _id中的键值
。例如。在这种情况下
答案 0 :(得分:2)
您可以在aggregation
下使用
db.collection.aggregate([
{ "$unwind": "$statuses" },
{ "$group": {
"_id": {
"_id": "$_id",
"statuses": "$statuses.status"
},
"count": { "$sum": "$statuses.count" }
}},
{ "$group": {
"_id": "$_id._id",
"statuses": {
"$push": {
"status": "$_id.statuses",
"count": "$count"
}
}
}}
])