推荐用mongodump导出完整数据库备份,支持认证、gzip压缩和筛选;mongoexport适用于单集合json/csv导出,需指定字段和查询条件;compass适合图形化操作;自动化脚本可实现定时压缩备份。

你需要把MongoDB里的数据完整导出用于备份、迁移或分析,但不确定该用mongodump还是mongoexport,也不清楚带认证、压缩或筛选条件时怎么写命令。
用mongodump导出整个数据库(推荐用于备份)
mongodump生成的是二进制BSON格式,保留索引、ObjectId、日期等原始类型,是官方推荐的备份方式。
第一步:确保MongoDB服务正在运行,且你有对应数据库的读取权限。
第二步:在终端中执行基础导出命令,例如导出本地test数据库到当前目录下的backup文件夹:
mongodump --db test --out ./backup
第三步:如果数据库启用了身份验证,必须显式提供用户名、密码和认证库,否则会报错Authentication failed:
mongodump --host localhost --port 27017 --username admin --password "myPass123" --authenticationDatabase admin --db test --out ./backup
【不加--authenticationDatabase会导致连接成功但权限拒绝】
第四步:对大数据库启用gzip压缩,可节省50%以上磁盘空间,导出时自动压缩,无需额外处理:
mongodump --db test --gzip --out ./backup_compressed
用mongoexport导出为JSON或CSV(适合跨系统交换)
mongoexport只支持单个集合,输出人类可读的JSON或结构化CSV,常用于导入到Excel、MySQL或前端调试。
方法一:导出users集合全部文档为JSON文件
mongoexport --db myapp --collection users --out users.json
方法二:导出指定字段的CSV,需明确列出字段名,否则CSV会缺少表头或字段错位:
mongoexport --db myapp --collection users --type csv --fields name,email,created_at --out users.csv
方法三:按条件导出,比如只导出2025年注册的用户,注意JSON查询字符串必须用单引号包裹,双引号内部不能冲突:
mongoexport --db myapp --collection users --query '{"created_at": {"$gte": {"$date": "2025-01-01T00:00:00Z"}}}' --out users_2025.json
一款AI工具,主要用于Monitor and clean up invalid Codex authentication files in CPA. Check quota status, disable files returning 401 errors, and perform dual verification before deletion.,适合需要提升相关任务效率的用户。
用MongoDB Compass图形化导出(零命令行经验适用)
适合不熟悉终端操作、需要快速导出少量数据或验证内容是否正确的场景。
打开Compass → 连接到目标集群 → 左侧选中要导出的数据库和集合 → 点击右上角“Add Data” → 选择“Export JSON or CSV file” → 浏览保存路径并确认。
注意:Compass导出的JSON默认是换行分隔格式(NDJSON),每行一个独立文档,不是标准JSON数组;如需数组格式,必须手动合并或用脚本转换。
导出前可先在查询栏输入过滤条件(如{status: "active"}),再点击Export,这样只导出匹配结果。
带时间戳的自动化备份脚本(Linux/macOS)
把日常备份变成定时任务,避免人为遗漏。
创建shell脚本backup_mongo.sh,内容如下:
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/opt/mongo_backups"
mkdir -p $BACKUP_DIR/$DATE
mongodump --db production --gzip --out $BACKUP_DIR/$DATE
赋予执行权限:
chmod +x backup_mongo.sh
添加到crontab每日凌晨2点执行:
0 2 * * * /path/to/backup_mongo.sh
【务必测试脚本在终端中能否正常运行,再加入crontab】










