160 lines
9.0 KiB
Plaintext
160 lines
9.0 KiB
Plaintext
---
|
||
title: MongoDB 工作台
|
||
description: 浏览、筛选、编辑和复制 MongoDB 文档,并管理集合、索引和 GridFS。
|
||
---
|
||
|
||
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 风格命令。编辑器会根据 Collection、字段、查询运算符、更新运算符、聚合阶段和游标方法提供补全。
|
||
|
||
常见命令包括:
|
||
|
||
```javascript
|
||
db.users.find({ status: "active" }).sort({ createdAt: -1 })
|
||
```
|
||
|
||
```javascript
|
||
db.orders.aggregate([
|
||
{ $match: { status: "paid" } },
|
||
{ $group: { _id: "$customerId", total: { $sum: "$amount" } } }
|
||
])
|
||
```
|
||
|
||
`use <database>` 会切换当前 MongoDB 查询上下文。
|
||
|
||
## 表格编辑
|
||
|
||
表格视图把常见字段展开成列。支持:
|
||
|
||
- 编辑顶层或嵌套字段
|
||
- 新增和删除字段
|
||
- 新建、克隆和删除文档
|
||
- 复制选中文档为 JSON、Markdown 或 MongoDB Shell 语句
|
||
- 排除 `_id` 后复制为新文档模板
|
||
- 在保存前查看待执行更新或删除目标
|
||
|
||
字段结构差异很大的 Collection 更适合使用完整文档视图,避免隐藏字段在表格列中被忽略。
|
||
|
||
## JSON 文档编辑
|
||
|
||
文档详情可以在字段树和完整 JSON 源码之间切换:
|
||
|
||
- 新建文档时粘贴完整 JSON
|
||
- 保存前校验 JSON 语法和根对象结构
|
||
- 格式化、折叠和复制嵌套对象/数组
|
||
- 保留 `$oid`、`$date`、`$numberLong` 等 Extended JSON
|
||
- 修改 `_id` 时按新标识创建文档,并删除旧文档
|
||
- 完整 JSON 保存按整文档替换语义处理
|
||
|
||
<Callout type="warn">整文档替换会写回完整对象。编辑前确认当前 JSON 包含需要保留的所有字段,尤其是并发修改频繁的 Collection。</Callout>
|
||
|
||
## 索引
|
||
|
||
在对象树或 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 服务端决定
|
||
- 分页总数可能为估算值,不能作为强一致统计
|
||
|
||
<Cards>
|
||
<Card title="生产写入保护" href="/cn/docs/production-safety">
|
||
了解 MongoDB 过滤范围、只读连接和 MCP 策略。
|
||
</Card>
|
||
<Card title="连接与驱动" href="/cn/docs/driver-management">
|
||
管理原生与 legacy Agent,并排查驱动启动问题。
|
||
</Card>
|
||
<Card title="专项工作台" href="/cn/docs/specialized-workspaces">
|
||
查看 Redis、搜索、向量、HBase、消息队列和配置中心。
|
||
</Card>
|
||
</Cards>
|