如何将Mongo Shell中MongoDB查询的执行结果导出到本地文件
MongoDB Shell查询结果导出到本地文件实现方法
方法1:系统终端直接执行查询导出(推荐)
不需要提前进入Mongo Shell,直接在操作系统终端执行命令即可完成导出,效率最高:
- 如果你使用的是Mongo 5.0+默认的新版Mongo Shell(
mongosh),执行以下命令(将示例中的test替换为你实际使用的数据库名):
mongosh test --eval "JSON.stringify(db.persons.find({}).toArray(), null, 2)" --quiet > /Users/david/my_files/persons.js
参数说明:
--eval:指定要在Mongo Shell中执行的JS代码--quiet:屏蔽Mongo Shell的欢迎信息、连接日志等冗余输出> 路径:将命令的标准输出重定向写入指定文件- 如果你使用的是旧版Mongo Shell(
mongo命令),替换命令开头的mongosh为mongo即可:
mongo test --eval "printjson(db.persons.find({}).toArray())" --quiet > /Users/david/my_files/persons.js
注意:
find()默认返回游标对象,直接导出只会输出前20条结果和游标元信息,调用.toArray()可以一次性导出所有匹配的文档内容。
方法2:已进入Mongo Shell时的导出方案
如果你已经打开了Mongo Shell会话不想退出,可以根据你使用的Shell版本选择对应方法:
- 新版
mongosh内置了文件写入API,直接在Shell中执行以下代码即可:
// 先获取所有查询结果 const queryResult = db.persons.find({}).toArray(); // 写入目标文件 fs.writeFile('/Users/david/my_files/persons.js', JSON.stringify(queryResult, null, 2));
- 旧版
mongo没有内置文件写入能力,可以提前开启终端的会话记录功能:- 进入Mongo Shell前,在终端执行
script /Users/david/my_files/persons.js开启日志记录 - 进入Mongo Shell执行
db.persons.find({})拿到查询结果 - 按
Ctrl+D退出日志记录会话,所有终端输出都会写入目标文件,手动删除文件头尾的冗余会话信息即可。
- 进入Mongo Shell前,在终端执行
可选优化
- 如果需要导出的文件是标准JSON格式,建议将文件后缀改为
.json,更符合通用规范 - 如果连接的Mongo实例需要身份认证,在命令中添加
-u 用户名 -p 密码 --authenticationDatabase admin参数即可正常导出
内容的提问来源于stack exchange,提问作者Moyshe Zuchmir
相关产品推荐
相关产品推荐

