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

如何处理MongoDB返回的带$numberInt等标识的EJSON格式数据

MongoDB Realm返回带$类型标识EJSON的转换方案及格式原因

带$前缀数字类型标识的原因

你从MongoDB Realm查询返回的内容是MongoDB扩展JSON(简称EJSON)格式,不是普通JSON。
MongoDB原生支持32位整数、64位整数、双精度浮点数等多种精细化数值类型,但标准JSON只有统一的number类型,无法区分这些类型差异,会存在精度丢失的风险。因此MongoDB的序列化接口会用$numberInt、$numberDouble这类带$前缀的类型字段包裹数值,保留原始数据的类型信息,这是序列化输出的格式,不是数据在数据库中实际存储的结构。

无固定字段场景下的转换方案

你提到的方案是经过验证的可行方案,无需预先定义Schema就能适配字段不统一的场景,具体操作如下:

  • 首先安装依赖包:npm install mongodb-extjson
  • 在代码中导入EJSON模块
  • 遍历返回的文档数组,对每个文档先执行JSON.stringify序列化,再调用EJSON.parse并传入{strict: false}参数即可完成转换

示例代码:

restaurants.map((restaurant) => {
  restaurant = EJSON.parse(JSON.stringify(restaurant), {strict: false});
  // 后续可直接使用转换后的普通JSON对象
})

注意{strict: false}参数为必填项,该配置允许解析器识别MongoDB专属的类型标识字段,自动将其转换为原生JS的数值类型,无需提前配置字段规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:30:03