当数组具有相同的_id时,在mongodb中的数组中组合数组

吉吉101

我正在使用 mongodb 开发一个项目,并且在一个数组中,我目前正在获得两个具有相同_id. 我希望将这两组数据结合起来。我目前得到的:

    "items": [
      {
        "_id": "Red",
        "15-17": 1
      },
      {
        "_id": "Bliss",
        "15-17": 2
      },
      {
        "_id": "Green",
        "18-25": 1
      },
      {
        "_id": "Bliss",
        "18-25": 2
      }
    ]

我想得到什么:

   "items": [
      {
        "_id": "Red",
        "15-17": 1
      },
      {
        "_id": "Bliss",
        "15-17": 2,
        "18-25": 2
      },
      {
        "_id": "Green",
        "18-25": 1
      },
    ]

对于如何做到这一点,我真的很感激任何帮助或建议。

汤姆·斯拉巴特

您可以通过几种不同的方式实现这一点,这是我认为最简单的解决方案。

我们将展开 items 数组,然后为 each 分组item._id,这将允许我们“合并”来自各种值的所有值。

最终我们将恢复原始结构,如下所示:

db.collection.aggregate([
  {
    $unwind: "$items"
  },
  {
    $group: {
      _id: "$items._id",
      values: {
        $push: "$items"
      },
      id: {
        $first: "$_id"
      }
    }
  },
  {
    $addFields: {
      values: {
        $reduce: {
          input: "$values",
          initialValue: {},
          in: {
            "$mergeObjects": [
              "$$this",
              "$$value"
            ]
          }
        }
      }
    }
  },
  {
    $group: {
      _id: "$id",
      items: {
        $push: "$values"
      }
    }
  }
])

蒙戈游乐场

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章