如何将 Mongo 查询数组结果转换为展平对象,键应为 _id

How to convert Mongo query array result into flatten object and key should be _id

如何将 mongo 查询结果转换为展平对象。

当前结果:

[
  {
    "_id": "61ef7e5497c9912ac1e56404",
    "name": "Mark",
    "age": 20,
    "isMinor": true
  },
  {
    "_id": "61ef7e5497c9912ac1e56404",
    "name": "Sam",
    "age": 22,
    "isMinor": false
  }
]

异常输出:

[
  {
    "61ef7e5497c9912ac1e56404": {
      "_id": "61ef7e5497c9912ac1e56404",
      "name": "Mark",
      "age": 20,
      "isMinor": true
    },
    "61ef7e5497c9912ac1e56404": {
      "_id": "61ef7e5497c9912ac1e56404",
      "name": "Sam",
      "age": 22,
      "isMinor": false
    }
  }
]

我想使用聚合查询本身来做到这一点。

我当前的查询:

Users.aggregate({$addField:{isMinor:{ $cond: [
                    { $gt: ['$age', 20] },
                    true, false,
                  ]}}})
  1. $group - 对文档进行分组并添加包含 key-value 对(键:id,值:文档)数组的 users 字段。这个阶段将return只有一个文件。
  2. $replaceWith - 用指定文档替换输入文档。此阶段将输出 key-value 对中的文档。
db.collection.aggregate([
  // Previous stages
  {
    $group: {
      _id: null,
      users: {
        $push: {
          k: { $toString: "$_id" },
          v: "$$ROOT"
        }
      }
    }
  },
  {
    "$replaceWith": {
      $arrayToObject: "$users"
    }
  }
])

Sample Mongo Playground