navicat 17 的「导出向导」不支持按查询条件导出 mongodb 集合,仅能导出整个集合或当前网格视图显示的数据;真正按条件导出需通过数据库右键→「打开命令行界面」执行 find 查询后右键「导出记录」,或手动调用 mongodump --query。
navicat 17 的「导出向导」不支持按查询条件导出 mongodb 集合,右键选它只会导出整个集合或当前页显示的数据。
导出向导只能导出整集合或当前页,不能加 find 条件
你在左侧数据库树中对集合右键 →「导出向导」,弹出的界面里没有输入查询语句的位置。它只提供两个选项:
- 导出整个集合(默认)
- 仅导出当前网格视图中显示的行(即手动翻页后看到的那几页)
这意味着如果你已经用筛选器过滤出某省数据,或者手动滚动到第 50 页,再点导出向导 →「当前页」,它确实只导出那几十条,但这不是真正意义上的「按条件导出」——它不依赖查询逻辑,而是依赖 UI 当前渲染状态,不可复现、不精准、无法用于脚本或定时任务。
真正按条件导出必须走「查询窗口 + 导出结果」流程
这是 Navicat for MongoDB 唯一可靠、可复现的条件导出方式:
- 右键目标数据库 →「打开命令行界面」(不是集合,是数据库层级)
- 输入标准 MongoDB 查询,例如:
db.orders.find({ status: "completed", created_at: { $gte: ISODate("2025-01-01") } }) - 点击「执行」,确认结果正确
- 在结果表格区域右键 →「导出记录」→ 选格式(JSON/CSV)、路径、是否含标题
注意:find 返回的是游标,Navicat 会自动遍历并导出全部匹配文档;若数据量极大(如百万级),建议先用 limit(10000) 测试,避免卡死界面。
想用 mongodump --query?得绕过图形界面手动调用
Navicat 17 内置的 MongoDB Tools(mongodump)不暴露 --query 参数入口。你必须:
- 确认已配置 MongoDB Tools 路径(设置 → 工具 → MongoDB Tools → 指向
bin目录) - 在终端中手动运行:
mongodump --host localhost --port 27017 --db mydb --collection users --query '{"age": {"$gt": 18}}' --out ./export/ - 注意 JSON 查询字符串必须是合法双引号格式,单引号在 Windows CMD 下会报错,建议用 PowerShell 或加转义
这个方法导出的是 BSON + metadata,不是直接可用的 CSV/Excel,后续需用 mongoexport 转换,适合批量自动化,不适合临时查几条数据就导出。
最容易被忽略的一点:Navicat 的「查询窗口」执行 find 时,如果字段含中文、特殊字符或嵌套结构(如 address.city),导出 CSV 可能乱码或截断;此时务必选 JSON 格式导出,它原样保留所有 BSON 类型(Date、ObjectId、数组等),后续再用脚本处理更稳妥。











