DBX

MongoDB 工作台

MongoDB 工作台围绕数据库、Collection、文档、索引和 GridFS 组织,不把文档强制转换成关系型表。它提供表格视图和完整 JSON 视图,并保留 ObjectId、日期、长整数等 Extended JSON 类型。

连接与驱动

推荐使用标准 mongodb:// 或 mongodb+srv:// 连接字符串,并在 URL 中包含副本集、认证库、TLS 和其他参数。Atlas、Replica Set 和直连部署都使用同一个连接入口。

DBX 优先使用原生 MongoDB 路径。当服务端或认证协议需要旧驱动时,可以选择或自动回退到 mongodb-legacy Agent。旧驱动的管理和修改能力可能少于原生驱动。

数据库与 Collection

对象树可以:

  • 列出数据库、Collection、索引和 GridFS Bucket
  • 显示 Collection 文档数、大小和其他可获取统计
  • 创建、重命名或删除 Collection(原生驱动且连接可写时)
  • 删除数据库、单个索引或除 _id_ 外的可删除索引
  • 从 Collection 打开文档浏览器或查询编辑器

删除和重命名会显示目标和请求预览,并受只读与生产保护约束。

文档浏览与分页

文档浏览器支持:

  • 分页读取和估算总数
  • 表格视图与完整文档视图
  • 顶层和嵌套字段列,例如 address.city
  • 可搜索字段选择器、隐藏列和持久化列布局
  • 快速过滤器以及多个字段条件
  • 数据库侧排序和 Collection 查询

MongoDB 的总数可能使用估算值。数据持续写入时,翻页过程中的总数和最后一页可能变化。

过滤与命令

可以在文档浏览器中构建字段过滤,也可以在 MongoDB 查询标签中输入 shell 风格命令。日期类型的过滤值除 RFC 3339 外也接受 2025-04-01 19:46:03 或 2025-04-01,不带时区的文本按本地时区解析。编辑器会根据数据库、Collection、字段、查询运算符、更新运算符、聚合阶段和游标方法提供补全。

常见命令包括:

db.users.find({ status: "active" }).sort({ createdAt: -1 })
db.orders.aggregate([
  { $match: { status: "paid" } },
  { $group: { _id: "$customerId", total: { $sum: "$amount" } } }
])

use <database> 会切换当前 MongoDB 查询上下文。在 use 之后以及 db.getSiblingDB("…") 内部会补全数据库名。

表格编辑

表格视图把常见字段展开成列。支持:

  • 编辑顶层或嵌套字段
  • 新增和删除字段
  • 新建、克隆和删除文档
  • 复制选中文档为 JSON、Markdown 或 MongoDB Shell 语句
  • 排除 _id 后复制为新文档模板
  • 在保存前查看待执行更新或删除目标

字段结构差异很大的 Collection 更适合使用完整文档视图,避免隐藏字段在表格列中被忽略。

查询结果编辑

当查询标签中只有一条不带投影的 find 或 findOne、且结果包含 _id 时,结果表格可以直接编辑:可以修改字段、选中并删除行,保存前查看将要执行的 updateOne 和 deleteOne 语句,删除后表格会自动重新加载。结果表格不支持新增行,请使用 insertOne 或文档浏览器。聚合、带投影的查询以及多条命令的脚本保持只读,因为它们的行无法对应到单个文档。

JSON 文档编辑

文档详情可以在字段树和完整 JSON 源码之间切换:

  • 新建文档时粘贴完整 JSON
  • 保存前校验 JSON 语法和根对象结构
  • 格式化、折叠和复制嵌套对象/数组
  • 保留 $oid、$date、$numberLong 等 Extended JSON
  • 修改 _id 时按新标识创建文档,并删除旧文档
  • 完整 JSON 保存按整文档替换语义处理
整文档替换会写回完整对象。编辑前确认当前 JSON 包含需要保留的所有字段,尤其是并发修改频繁的 Collection。

索引

在对象树或 Collection 结构中可以查看索引名称、字段、唯一性和其他元数据。原生驱动支持时,可以删除单个索引、批量删除可删除索引,或从结构入口管理索引。

MongoDB 会保留 _id_ 索引;分片键等服务端规则也可能阻止删除其他索引。最终结果以服务端响应为准。

GridFS

GridFS 工作台用于管理 Bucket 和文件:

  • 浏览、创建和删除 Bucket
  • 上传、下载、预览和删除文件
  • 查看文件名、大小、上传时间、Chunk 和 Metadata
  • 按字段过滤和排序文件
  • 导出文件列表或 Metadata

删除 Bucket 会删除其中的文件和 Chunk。生产环境执行前先确认 Bucket 名称和备份。

导入与导出

Collection 文档提供独立的 CSV/JSON/NDJSON 与 BSON 导入导出,和关系型 Table Import 不是同一条工作流。CSV 每一行生成一个文档,嵌套值保持嵌套,BSON 备份保留原生 BSON 类型。

导入数据

  1. 在集合上右键选择「导入数据」。
  2. 先明确选择格式,再选择 .csv、.json、.ndjson/.jsonl、.bson 或 .bson.gz 文件。桌面端读取本地路径,Web 端上传到临时文件;更换文件不会覆盖已选择的格式。
  3. 对照预览检查数据。文本格式支持编码和类型设置,CSV 可逐列覆盖推断类型;BSON 导入不应用 CSV 文本转换。
  4. 确认以追加方式写入。重复 _id 会停止导入,已提交的批次不会回滚。

CSV 按 MongoDB Compass:首行表头,嵌套字段用点号路径(address.city),数组索引(tags[0]、matrix[0][1]),ObjectId 写成 24 位十六进制,日期为 ISO-8601,空单元格为 null。导入采样前 1000 行推断列类型;_id 的十六进制会还原为 ObjectId,recognizeObjectIdHex 可将此规则扩展到其他列。JSON/NDJSON 使用 Extended JSON($oid、$date)。全部按字符串会把每个单元格当文本。

CSV 类型保真:Double 导出再导入会变为 Decimal128(十进制文本无损)。非 _id 的 ObjectId 字段会往返为 String,除非打开 recognizeObjectIdHex。小的 Int64 可能收窄为 Int32;ISO 日期格式的字符串会变为 DateTime。Extended JSON 类型($binary、$regularExpression、$timestamp、$minKey、$maxKey、$code)通过 JSON 文本单元格往返。空数组 [] 和空对象 {} 往返正确。

集合导入限制:只支持追加(无清空或 upsert),CSV 导出从前 10000 个文档发现字段(之后的字段会被静默丢弃;变化 schema 请改用 NDJSON 或 BSON),无 JSON 数组导出格式,不支持 Excel/GridFS 导入,失败批次不会自动重试。集合级 BSON 导入只恢复文档,不恢复配套元数据和索引。

导出数据

  • 在集合上右键选择「导出数据」,再选 CSV、NDJSON、BSON 或 Gzip BSON,会像表导出一样直接打开保存文件对话框。
  • CSV 嵌套对象写为点号列(address.city),数组写为索引列(tags[0]、tags[1])。NDJSON 每行一个规范 Extended JSON 文档。
  • 字段数超过 256 的 Collection 请改用 NDJSON 或 BSON。

数据库备份与恢复

在数据库节点右键选择「备份数据库」或「恢复数据库」。数据库备份包含选中集合、集合选项、索引和视图。原生驱动和 mongodb-legacy Agent 均支持;Agent 路径需要较新的 Agent 版本(支持 find 游标),以保证 BSON 类型在传输中不丢失。

  • 桌面端支持官方目录布局与 MongoDB archive 格式,均可使用 gzip。Web 端导出 archive 文件,恢复时支持 archive 或上传目录。
  • 目录备份包含 <数据库>/<集合>.bson 和 .metadata.json,或对应的 .gz 文件。MongoDB archive 是独立的流式格式,不是 ZIP 或 tar。
  • 格式与 gzip 选项需明确选择。目录恢复的「读取备份」只读取清单和元数据;确认源库、目标库和集合后,才上传选中的数据文件。
  • 恢复按单遍流式读取和写入进行。可选的 objcheck 默认关闭,开启后在同一遍读取中逐文档校验;BSON 边界、gzip 完整性和 archive 校验和检查始终保留。
  • 默认追加写入。「恢复前删除选中的目标同名集合」只删除并重建这些集合。已有 _id 可能导致 E11000;失败或取消不会回滚此前的写入。
  • Web 上传复用服务端 DBX_MAX_UPLOAD_MB 配置。桌面端直接读取本地文件,无需 HTTP 上传。

上述格式可与官方 mongodump/mongorestore 对支持的集合双向互通。本流程不提供 oplog 回放、时间点一致性保证、UUID 保留,也不处理内部数据库、时间序列集合和加密集合;这些场景请使用官方工具。

如果只需要当前可见选择,仍可从表格复制当前文档、选中文档或字段值为普通 JSON 或 Extended JSON。

安全与兼容边界

  • 只读连接会阻止文档、字段、索引、Collection、数据库和 GridFS 修改
  • 生产环境保护会在可识别写入前要求确认
  • MCP“数据读写”只允许范围明确的 MongoDB 修改;不透明或近似全量过滤按高风险处理
  • 旧版 Agent 可能不支持 Collection/索引管理等原生能力
  • Atlas 权限、认证库、TLS 和 IP allowlist 都由 MongoDB 服务端决定
  • 分页总数可能为估算值,不能作为强一致统计