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

MongoDB插入数据时如何将对象字段值从double类型转换为Long类型

MongoDB字段从Double转为Long类型解决方案

插入时直接指定Long类型(推荐,从根源避免问题)

针对你使用的Node.js MongoDB驱动场景,操作步骤如下:

  1. 先从驱动包中引入Long类型构造函数:
const { Long } = require('mongodb');
  1. 插入前先处理chart数组内的x字段,转换为Long类型后再执行插入:
// 处理原数据的x字段
const processedChart = data.chart.map(item => ({
  ...item,
  x: Long.fromNumber(Number(item.x))
}))
// 执行插入操作
client.db("customDB").collection("chart").insertMany([{"chart": processedChart}])

如果是其他运行环境,对应导入对应驱动的长整型构造函数即可,比如Python环境使用bson.int64.Int64封装数值。

已存储的旧数据批量修正

如果已经有数据存入数据库需要批量修正,可在MongoDB Shell中执行以下更新语句:

db.chart.updateMany(
  // 匹配所有chart数组中x为double类型的文档
  { "chart.x": { $type: "double" } },
  // 聚合更新,遍历数组转换x字段类型
  [{
    $set: {
      "chart": {
        $map: {
          input: "$chart",
          in: {
            $mergeObjects: ["$$this", { x: { $toLong: "$$this.x" } }]
          }
        }
      }
    }
  }]
)

注意:转换前请确认x字段的数值均为整数,若存在小数位$toLong会直接截断小数部分,建议先校验数据再执行更新操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:48:03