Chi*_*tle 3 mongodb aggregation-framework
我有具有这种形状的衬衫尺寸的 MongoDB 文档:
{ "_id" : "L", "count" : 2.0 },
{ "_id" : "XL", "count" : 2.0 },
{ "_id" : "XXXL", "count" : 1.0 },
{ "_id" : "M", "count" : 1.0 }
Run Code Online (Sandbox Code Playgroud)
如何返回符合以下条件的单个文档:
想要的形状:
{
S: 0,
M: 1,
L: 2,
XL: 2,
XXL: 0,
XXXL: 1
}
Run Code Online (Sandbox Code Playgroud)
您需要首先使用$groupstage withk和vpair推送数组中的所有值...然后使用arrayToObject聚合提取键值对,最后您必须检查$ifNull每个大小的条件
db.collection.aggregate([
{ "$group": {
"_id": null,
"array": {
"$push": {
"k": "$_id",
"v": "$count"
}
}
}},
{ "$replaceRoot": {
"newRoot": { "$arrayToObject": "$array" }
}},
{ "$addFields": {
"S": { "$ifNull": ["$S", 0] },
"M": { "$ifNull": ["$M", 0] },
"L": { "$ifNull": ["$L", 0] },
"XL": { "$ifNull": ["$XL",0]},
"XXL": { "$ifNull": ["$XXL", 0]},
"XXXL": { "$ifNull": ["$XXXL", 0] }
}}
])
Run Code Online (Sandbox Code Playgroud)
输出
[
{
"L": 2,
"M": 1,
"S": 0,
"XL": 2,
"XXL": 0,
"XXXL": 1
}
]
Run Code Online (Sandbox Code Playgroud)
在这里检查
| 归档时间: |
|
| 查看次数: |
1351 次 |
| 最近记录: |