如何通过命令行一次性导出MongoDB所有集合(JSON格式)
嘿,我来帮你搞定MongoDB所有集合导出成JSON的需求~ 下面给你两种实用的方法,分别适配不同的操作系统,还有一些注意事项要留意:
方法一:用Bash脚本(Linux/macOS/WSL)
这个方法适合类Unix环境,核心思路是先获取数据库里的所有集合名称,再循环用mongoexport逐个导出:
- 先创建一个脚本文件(比如
export_all_collections.sh),把下面的代码粘进去:
#!/bin/bash # 替换成你的数据库名称 DB_NAME="your_database_name" # 替换成你的MongoDB连接地址(不需要认证的话可以简化成 mongodb://localhost:27017/) MONGO_URI="mongodb://username:password@localhost:27017/" # 创建导出目录(可选,把所有JSON文件放一起更整洁) mkdir -p mongo_export # 获取所有集合名称并保存到临时文件 mongosh $DB_NAME --quiet --eval "db.getCollectionNames().join('\n')" > collections.txt # 循环遍历每个集合,导出为JSON while read collection; do echo "正在导出集合:$collection" mongoexport --uri="$MONGO_URI$DB_NAME" --collection="$collection" --out="mongo_export/${collection}.json" done < collections.txt # 清理临时文件 rm collections.txt echo "所有集合导出完成!文件都在 mongo_export 目录里~"
给脚本加执行权限:
chmod +x export_all_collections.sh运行脚本:
./export_all_collections.sh
方法二:用PowerShell脚本(Windows)
Windows用户可以用PowerShell来实现同样的逻辑:
- 创建一个脚本文件(比如
Export-AllCollections.ps1),粘贴以下代码:
# 替换成你的数据库名称 $DB_NAME = "your_database_name" # 替换成你的MongoDB连接地址 $MONGO_URI = "mongodb://username:password@localhost:27017/" # 创建导出目录(可选) New-Item -ItemType Directory -Name mongo_export -Force | Out-Null # 获取所有集合名称并保存到临时文件 mongosh $DB_NAME --quiet --eval "db.getCollectionNames().join('\n')" | Out-File -FilePath collections.txt -Encoding utf8 # 循环导出每个集合 Get-Content collections.txt | ForEach-Object { $collection = $_ Write-Host "正在导出集合:$collection" mongoexport --uri="$MONGO_URI$DB_NAME" --collection="$collection" --out="mongo_export/${collection}.json" } # 清理临时文件 Remove-Item collections.txt Write-Host "所有集合导出完成!文件都在 mongo_export 目录里~"
- 打开PowerShell,切换到脚本所在目录,运行脚本:
.\Export-AllCollections.ps1
可选:用mongodump + bsondump 转换
如果你先想做BSON格式的备份,再转换成JSON,可以这么操作:
- 先导出所有集合的BSON备份:
mongodump --db your_database_name --out mongo_dump - 把每个BSON文件转换成JSON:
# Bash环境下 for file in mongo_dump/your_database_name/*.bson; do collection=$(basename "$file" .bson) bsondump "$file" > "mongo_export/${collection}.json" done
这种方法导出的JSON格式和mongoexport略有差异,适合需要备份+转换的场景。
关键注意事项
- 确保你已经安装了MongoDB命令行工具(
mongosh、mongoexport、mongodump这些),如果是MongoDB Atlas,也可以用这些工具连接导出。 - 如果你的MongoDB开启了认证,一定要在连接URI里正确填写用户名和密码,或者用
--username、--password参数单独指定。 - 要是连接的是副本集或分片集群,记得把URI改成对应的集群地址(比如
mongodb+srv://xxx.mongodb.net/)。 mongoexport默认导出的是JSON Lines格式(每行一个文档),如果需要导出成数组格式,可以加--jsonArray参数。
内容的提问来源于stack exchange,提问作者Sai Prasad G
相关产品推荐
相关产品推荐

