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

如何从命令行执行多个MongoDB脚本?

解决MongoDB批量执行多个查询脚本的问题

这问题我之前也碰到过!你直接用mongo db-name < query*失败的原因很明确:shell的输入重定向(<)只能接收单个文件,当你用通配符query*时,shell会把它展开成query1.js query2.js ...这样的多个文件名,但重定向没法同时读取多个文件的内容,自然就执行失败了。

给你几个实用的解决方案:

方法1:用cat拼接所有脚本后一次性执行

这是最快捷的方式,把所有query*.js的内容拼接起来,通过管道传给mongo命令:

cat query*.js | mongo db-name

这种方式会把所有脚本的执行结果合并输出,适合不需要区分单个脚本执行情况的场景。

方法2:循环逐个执行每个脚本

如果你需要单独查看每个脚本的执行结果,或者某个脚本执行失败时能及时定位问题,可以写个简单的shell循环:

for script in query*.js; do
    echo "正在执行脚本: $script"
    mongo db-name < "$script"
    echo "脚本 $script 执行完成"
done

这个循环会遍历所有匹配query*.js的文件,逐个执行,还能打印每个脚本的执行状态,排查问题更方便。

方法3:合并到临时文件再执行

如果你担心管道或者循环的稳定性,也可以先把所有脚本合并到一个临时文件,再执行:

cat query*.js > all-queries.js
mongo db-name < all-queries.js
# 执行完可按需删除临时文件
rm all-queries.js

这种方式和方法1效果类似,但多了一个临时文件的步骤,适合需要保留合并后脚本的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:49:47