例如,在我的Mongo Aggregate请求中,我得到了由两个对象组成的数组:
[
{
"key": "first",
"meta": 123,
},
{
"key": "second",
"meta": 567,
"maybeonmorefield": 789
}
]
是否可以仅使用Mongo聚合框架将该数组转换为以下对象:
{
"first": {
"meta": 123,
},
"second": {
"meta": 123,
"maybeonmorefield": 789
}
}
如您所见,键实际上是第一个示例中对象的key
字段值。
感谢任何提示:)
答案 0 :(得分:1)
您可以使用$replaceRoot在根级别重新排列文档,并使用$arrayToObject动态地构建新密钥:
db.collection.aggregate([
{
$addFields: {
"root": "$$ROOT"
}
},
{
$project: {
"root.key": 0,
"root._id": 0
}
},
{
$replaceRoot: {
newRoot: {
$arrayToObject: [[ { k: "$key", v: "$root" } ]]
}
}
}
])