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

MongoDB聚合:将JSON字符串字段转为对象并保留其他字段

解决MongoDB聚合中解析JSON字符串并保留其他字段的问题

你的聚合语句使用$project时仅指定了address字段,MongoDB默认会丢弃所有未明确声明的字段。要同时保留其他字段并将address的JSON字符串转为对象,可通过以下两种方式调整:

方法1:使用$addFields(推荐)

$addFields的核心特性是自动保留所有原有字段,仅替换或新增指定字段,无需手动列举其他字段,是最便捷的方案:

{
  $addFields: {
    "address": {
      $function: {
        "body": "function(address){ return JSON.parse(address) }",
        "args": ["$address"],
        "lang": "js"
      }
    }
  }
}

方法2:改进$project语句

如果一定要使用$project,可通过两种方式保留其他字段:

方式A(MongoDB 4.4+支持):用"*": 1包含所有原有字段

{
  $project: {
    "*": 1, // 包含所有原字段
    "address": {
      $function: {
        "body": "function(address){ return JSON.parse(address) }",
        "args": ["$address"],
        "lang": "js"
      }
    }
  }
}

方式B:显式列出所有需要保留的字段

若你的MongoDB版本不支持"*": 1,可手动写出所有要保留的字段:

{
  $project: {
    "name": 1,
    "contact": 1,
    "gender": 1,
    "address": {
      $function: {
        "body": "function(address){ return JSON.parse(address) }",
        "args": ["$address"],
        "lang": "js"
      }
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:52:26