首页 > 解决方案 > 如何在 $project 中将 $toString 用于 MongoDB 上的子文档字段?

问题描述

我正在尝试像这样聚合集合并转换ObjectID为字符串$project

'$project' => [
                'name' => 1,
                'desc' => 1,
                'price' => 1,
                'category._id' => ['$toString' => '$_id'],
                'category.name' => 1
]

但是,通过这样做,它会转换文档_id而不是类别 subdocument _id

无论如何让它转换category子文档_id

标签: mongodb

解决方案


  • $mapcategory迭代数组循环并转换_id为字符串并返回name_id
  {
    $project: {
      name: 1,
      desc: 1,
      price: 1,
      category: {
        $map: {
          input: "$category",
          in: {
            _id: { $toString: "$$this._id" },
            name: "$$this.name"
          }
        }
      }
    }
  }

推荐阅读