如何无需输入‘it’或修改查询即可导出MongoDB全量结果?
解决MongoDB mongosh导出全量数据的问题
方法1:通过mongosh启动参数直接执行查询
用mongosh的--quiet(关闭交互提示)和--eval(直接执行脚本)参数,配合toArray()输出全量结果:
mongosh --quiet --eval 'db.coll.find({device_type: "XYZ"},{_id: 1,expire_date:1}).toArray()' > my.result
这种方式不会出现分页提示或内容截断,直接输出所有匹配数据。
方法2:在查询脚本中关闭分页限制
如果坚持用< my.query的脚本导入方式,在my.query文件开头添加一行关闭shell分页的配置:
DBQuery.shellBatchSize = Infinity; db.coll.find({device_type: "XYZ"},{_id: 1,expire_date:1});
然后执行原命令:
mongosh < my.query > my.result
DBQuery.shellBatchSize = Infinity会强制mongosh一次性输出所有查询结果,不再触发分页提示。
方法3:用mongoexport工具(大数据集首选)
如果是导出大规模数据,官方推荐用专门的mongoexport工具,完全规避交互限制:
mongoexport --db 你的数据库名 --collection coll --query '{"device_type": "XYZ"}' --fields _id,expire_date --out my.result.json
该工具直接导出全量匹配数据,输出格式更规范,适合批量导出场景。
内容的提问来源于stack exchange,提问作者Man Fromuncle
相关产品推荐
相关产品推荐

