在mongodb中,我在运行聚合后得到了一个低于形状的get对象。
{
"_id": 1,
"specificationList": {
"key": "Memory & Storage Features",
"values": [
{
"key": "Internal Storage",
"value": [
"32 KB"
]
},
{
"key": "RAM",
"value": [
"32 MB"
]
},
{
"key": "Expandable Storage",
"value": [
"8 GB"
]
},
{
"key": "Supported Memory Card Type",
"value": [
"MicroSD"
]
}
]
}
}
从上面的文档中,我怎样才能在下一个聚合管道中获得下面形状的对象。我需要达到以下形状,以使代码更清洁。我正在使用聚合来达到上面的形状(所以想要附加另一个管道),知道在下面的形状得到什么聚合管道会很好
{
"specList” : {
“Internal Storage”: “32 KB”,
“RAM”:”32 MB”,
“Expandable Storage”:”8 GB”,
“Supported Memory Card Type”:”MicroSD”
}
}
答案 0 :(得分:7)
在不知道完整管道的情况下,您可以使用 $arrayToObject
运算符将数组转换为单个文档,但该数组必须包含两个字段k
和{{ 1}} v
字段包含字段名称,k
字段包含字段值。在上面的聚合文档中,您需要映射
将数组赋值为上述格式,然后 $arrayToObject
运算符可以愉快地转换。
考虑添加 $project
管道步骤,该步骤使用 $map
运算符更改数组结构,然后将转换结果应用于期望的对象。
以下说明了这一点:
v