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

使用mongosh插入181KB JSON文件至Mongo集合遇参数过长错误

解决mongosh插入大JSON文件时"Arguments list too long"的问题

问题原因

你当前的脚本将整个JSON文件内容直接作为--eval的命令行参数传递,当文件大小超过系统内核的ARG_MAX限制(命令行参数总长度上限)时,就会触发该错误。调整ulimit -s修改的是栈大小,与命令行参数长度限制无关,因此无法解决问题。

可行解决方案

方案1:使用mongosh执行外部脚本文件

创建一个单独的JavaScript脚本文件,在脚本内读取JSON文件并执行插入操作,避免将大内容塞进命令行参数:

  1. 创建import_data.js脚本:
const fs = require('fs');
// 读取并解析JSON文件
const jsonData = JSON.parse(fs.readFileSync('/some/path/file.json', 'utf8'));
// 插入到目标集合
db.test_collection.insertOne(jsonData);
  1. 用mongosh执行该脚本:
/mongo/path/mongosh $databaseName \
    --tlsCertificateKeyFile someAuthDetails \
    --tlsCAFile someMoreAuthDetails \
    --quiet \
    --file import_data.js

方案2:通过管道传递执行逻辑到mongosh

将读取文件的逻辑通过管道传入mongosh,而非直接在命令行参数中传递大内容:

cat <<EOF | /mongo/path/mongosh $databaseName \
    --tlsCertificateKeyFile someAuthDetails \
    --tlsCAFile someMoreAuthDetails \
    --quiet
const fs = require('fs');
const jsonData = JSON.parse(fs.readFileSync('/some/path/file.json', 'utf8'));
db.test_collection.insertOne(jsonData);
EOF

方案3:使用官方导入工具mongoimport

如果只是单纯导入JSON文件,推荐使用MongoDB官方提供的mongoimport工具,它专门用于批量数据导入,完全规避命令行参数长度问题:

/mongo/path/mongoimport \
    --db $databaseName \
    --collection test_collection \
    --file /some/path/file.json \
    --tlsCertificateKeyFile someAuthDetails \
    --tlsCAFile someMoreAuthDetails

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:03:29