Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 使用基于对象关键点的关键点将对象数组转换为对象?_Mongodb_Aggregation Framework - Fatal编程技术网

Mongodb 使用基于对象关键点的关键点将对象数组转换为对象?

Mongodb 使用基于对象关键点的关键点将对象数组转换为对象?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,例如,在我的Mongo Aggregate请求中,我得到了一个数组,它由两个对象组成: [ { "key": "first", "meta": 123, }, { "key": "second", "meta": 567, "maybeonmorefield": 789 } ] 是否可以仅使用Mongo聚合框架将此数组转换为以下对象: { "first": { "meta": 123, }, "second": {

例如,在我的Mongo Aggregate请求中,我得到了一个数组,它由两个对象组成:

[
  {
    "key": "first",
    "meta": 123,
  },
  {
    "key": "second",
    "meta": 567,
    "maybeonmorefield": 789
  }
]
是否可以仅使用Mongo聚合框架将此数组转换为以下对象:

{
  "first": {
    "meta": 123,
  },
  "second": {
    "meta": 123,
    "maybeonmorefield": 789
  }
}
如您所见,键实际上是来自第一个示例中对象的
字段值

感谢您提供的提示:)

您可以使用在根级别重新排列文档并动态生成新密钥:

db.collection.aggregate([
    {
        $addFields: {
            "root": "$$ROOT"
        }
    },
    {
        $project: {
            "root.key": 0,
            "root._id": 0
        }
    },
    {
        $replaceRoot: {
            newRoot: {
                $arrayToObject: [[ { k: "$key", v: "$root" } ]]
            }            
        }
    }
])