You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB中如何为嵌套数组元素投影自定义字段名

问题原因

你当前写法的问题在于,$project阶段中直接对comments字段指定id: '$_id'时,$_id的作用域是外层的用户文档,所以会统一读取用户的_id赋值给所有评论的id字段。要处理数组内的每个子文档,需要通过$map运算符遍历评论数组,单独转换每个评论对象的字段。

正确查询语句

db.users.aggregate([
  {
    $project: {
      _id: 0,
      id: '$_id',
      name: 1,
      comments: {
        $map: {
          input: '$comments',
          as: 'currentComment',
          in: {
            id: '$$currentComment._id',
            content: '$$currentComment.content',
            post: '$$currentComment.post' // 如果不需要保留post字段可以删除该行
          }
        }
      }
    }
  }
])

执行结果

运行上述语句后会得到期望的返回:

[
  {
    "id": 1,
    "name": "John Doe",
    "comments": [
      {
        "id": 100,
        "content": "Comment 100",
        "post": "1000"
      },
      {
        "id": 101,
        "content": "Comment 101",
        "post": "1000"
      }
    ]
  }
]

内容的提问来源于stack exchange,提问作者Saeid Asadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:36:00