繁体   English   中英

mongodb聚合中如何将对象数组转为对象

[英]How to turn an array of objects into an object in mongodb aggregation

我在这里问过这个问题,得到了满意的答复 但是我有一个我无法解决的新问题。

我从查询中得到的输出是一个对象数组。 如何将该数组转换为对象? 我已经知道如何在普通的 javascript 中做到这一点,但如何在 mongodb 聚合查询中做到这一点?

您可以假设您在聚合查询中有以下数据。

[
    {  "choiceA": [
            {"_id": ObjectId("..."), "voter": "Juzi", "choice": 0, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Juma", "choice": 0, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Jane", "choice": 0, "pollId": 100 },
    ]},
    {  "choiceB": [
            {"_id": ObjectId("..."), "voter": "Jamo", "choice": 1, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Juju", "choice": 1, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Jana", "choice": 1, "pollId": 100 }
    ]},
    {  "choiceC": [ ] }
]

如何将其变成如下所示的对象

{
    "choiceA": [
            {"_id": ObjectId("..."), "voter": "Juzi", "choice": 0, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Juma", "choice": 0, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Jane", "choice": 0, "pollId": 100 },
    ],
    "choiceB": [
            {"_id": ObjectId("..."), "voter": "Jamo", "choice": 1, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Juju", "choice": 1, "pollId": 100 },
            {"_id": ObjectId("..."), "voter": "Jana", "choice": 1, "pollId": 100 }
    ],
    "choiceC": [ ] 
}

或者,您可以使用上面的结果作为输出来回答这个问题 谢谢你。

将这些步骤添加到您的管道中:

db.collection.aggregate([
  {
    $group: {
      _id: null,
      x: {
        $push: "$$ROOT"
      }
    }
  },
  {
    $project: {
      _id: 0,
      x: {
        $mergeObjects: "$x"
      }
    }
  },
  {
    $replaceRoot: {
      newRoot: "$x"
    }
  }
])

蒙戈游乐场

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM