如何将几个文档合并成一个唯一的键值文档?

4

我正在尝试将一组文档合并到一个集合 A 中。

{'s': 'v1', 'id': 1}
{'s': 'v2', 'id': 2}
{'s': 'v3', 'id': 3}
{'s': 'v4', 'id': 4}

将其转换为一组键值对的独特文档,如下所示。
{
   'v1': 1,
   'v2': 2,
   'v3': 3,
   'v4': 4
}

你能否提供一种使用唯一的MongoDB命令而不需要将数据存储到另一个集合中来完成此操作的方式?

1个回答

4
  • 使用$group$addToSet,从所有文档中创建一个包含键值对的数组
  • 使用$set$arrayToObject,将上一步骤生成的数组转换为一个对象,并将其赋值给result字段
  • 使用$replaceRoot,用前一步骤生成的result字段替换根文档
db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "result": {
        "$addToSet": {
          "k": "$s",
          "v": "$id"
        }
      }
    }
  },
  {
    "$set": {
      "result": {
        "$arrayToObject": "$result"
      }
    }
  },
  {
    "$replaceRoot": {
      "newRoot": "$result"
    }
  }
])

示例链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接