MongoDB Compass:从连接身份到文档与查询计划
在本机完成一次只读查询
准备一台装有 Docker Engine 的 Linux 桌面。Ubuntu 24.04 x86-64 上还没有 Compass 时,从 MongoDB Compass 官方安装入口选择 Linux .deb 包,记录下载页面、版本和文件的实际绝对路径;不要在终端猜一个可能已变化的文件名。下面核对包名、架构和文件摘要,再安装本地包。sha256sum 用于记录这次取得的文件,不能单凭自算的摘要证明下载来源;应另外核对浏览器的官方站点、组织分发渠道或官方提供的校验值。需要联网补齐包依赖时,APT 仍会使用当前主机已配置的软件源。
read -r -p '官方页面下载的 Compass .deb 绝对路径: ' COMPASS_DEB
test -f "$COMPASS_DEB" || exit 1
test "$(dpkg-deb -f "$COMPASS_DEB" Package)" = mongodb-compass || exit 1
test "$(dpkg-deb -f "$COMPASS_DEB" Architecture)" = "$(dpkg --print-architecture)" || exit 1
dpkg-deb -f "$COMPASS_DEB" Package Version Architecture
sha256sum "$COMPASS_DEB"
sudo apt install -- "$COMPASS_DEB"
command -v mongodb-compass
dpkg-query -W -f='${Version}\n' mongodb-compass若包名或架构检查失败,不要用 --force-architecture 绕过;回到官方页面选对系统和 CPU。其他 Linux 发行版按其官方安装入口选包,不套用 Ubuntu 的 apt 命令。官方命令行启动说明列出的 Linux 可执行文件位于 /usr/bin/mongodb-compass。下面的 MongoDB 只映射到本机回环地址;Compass 也在同一台机器上运行。远程桌面或另一台工作站不能直接使用 127.0.0.1,应先建立经授权的 SSH 转发,再把 Compass 连接到本机转发端口。实验使用独立容器、独立卷和合成订单,不连接业务库。
在 Bash 终端确认 compass-learning 容器、compass-learning-data 卷和宿主 27018 端口都未占用;若已存在,先确认来源,不要直接删除或复用。先显式创建带实验标签的卷,--mount 不会像 -v 那样在拼错卷名时悄悄新建另一卷。管理密码在终端交互输入,不写进本文或 shell 命令参数;Mongo 官方镜像初始化管理员使用 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD,不能只导出另一个本地变量。此一次性实验的密码仍会作为容器环境变量保存在 Docker 元数据中,不能用生产凭据。
set -euo pipefail
if docker container inspect compass-learning >/dev/null 2>&1 || \
docker volume inspect compass-learning-data >/dev/null 2>&1; then
printf '实验容器或卷已存在;停止启动并核对归属\n' >&2
exit 1
fi
test -z "$(ss -H -lnt '( sport = :27018 )')" || {
printf '27018 已有监听;先核对占用者\n' >&2
exit 1
}
docker volume create --label article-lab=mongodb-compass compass-learning-data
read -r -s -p '实验管理员密码: ' MONGO_INITDB_ROOT_PASSWORD
printf '\n'
test -n "$MONGO_INITDB_ROOT_PASSWORD" || exit 1
export MONGO_INITDB_ROOT_PASSWORD
if ! docker run -d --name compass-learning \
--label article-lab=mongodb-compass \
-p 127.0.0.1:27018:27017 \
-e MONGO_INITDB_ROOT_USERNAME=lab_admin \
-e MONGO_INITDB_ROOT_PASSWORD \
--mount type=volume,src=compass-learning-data,dst=/data/db \
mongo:8.0.29; then
unset MONGO_INITDB_ROOT_PASSWORD
printf '启动失败;保留带标签的卷以供核对,不直接重跑初始化\n' >&2
exit 1
fi
unset MONGO_INITDB_ROOT_PASSWORDdocker ps --filter name=compass-learning 应显示容器在运行,但运行状态不表示初始化已经结束;首次启动可能需要几十秒。若容器退出或管理员认证失败,先看 docker logs compass-learning,确认初始化阶段没有报告缺少 MONGO_INITDB_ROOT_PASSWORD,再核对端口和刚才的输入,不要在已有卷上反复改初始密码。为 compass_reader 另设一份实验密码,隐藏输入并只传给接下来的一次性 Shell 进程。容器正常后进入交互 Shell,按提示输入刚才的管理员密码:
read -r -s -p '实验只读账号密码: ' COMPASS_READER_PASSWORD
printf '\n'
export COMPASS_READER_PASSWORD
docker exec -e COMPASS_READER_PASSWORD -it compass-learning mongosh \
--username lab_admin --authenticationDatabase admin --password在 mongosh 中建立四条订单和一个只读账号。createUser 在当前认证库创建用户;内置 read role 只授予相应数据库的读取能力。只读密码从进程环境读取,不作为 JavaScript 字面量进入 Shell 历史。命令执行完应看到插入四条记录、创建用户成功,以及 paidOrders: 2。
const lab = db.getSiblingDB("compass_lab")
lab.orders.insertMany([
{ orderNo: "C-1001", status: "CREATED", amount: 50 },
{ orderNo: "C-1002", status: "PAID", amount: 120 },
{ orderNo: "C-1003", status: "PAID", amount: 80 },
{ orderNo: "C-1004", status: "CANCELLED", amount: 30 }
])
lab.createUser({
user: "compass_reader",
pwd: process.env.COMPASS_READER_PASSWORD,
roles: [{ role: "read", db: "compass_lab" }]
})
printjson({ paidOrders: lab.orders.countDocuments({ status: "PAID" }) })输入 exit 离开管理员 Shell,在宿主终端执行 unset COMPASS_READER_PASSWORD;它已用于创建只读用户,不需要继续留在当前 Shell 环境。下文的拒写反例会再次交互输入只读密码。在桌面应用菜单启动 Compass,或运行 mongodb-compass。在 Settings(齿轮图标)中开启 Set Read-Only Mode 并保存;它只隐藏写入界面,真正的写入限制由数据库的 read 角色执行。点击 Add New Connection,连接串填 mongodb://127.0.0.1:27018/compass_lab?authSource=compass_lab,在 Advanced Connection Options 的 Authentication 页填 compass_reader 和刚设置的密码,点击 Connect,不要保存含密码的连接档案。若认证失败,先核对认证库是 compass_lab,而不是容器根账号所在的 admin;若连接超时,检查回环端口和容器状态。Compass 连接说明与 readOnly 设置说明给出了这些界面的当前入口。
打开 compass_lab.orders 的 Documents 页。在 Query Bar 填入 Filter {"status":"PAID"};展开 Options,Project 填 {"_id":0,"orderNo":1,"status":1,"amount":1},Sort 填 {"orderNo":1},Limit 填 2,再点击 Find。结果应仅有 C-1002、C-1003,金额分别为 120、80。Filter 决定匹配哪些文档,Project 决定返回哪些字段,Sort 决定顺序,Limit 只限制返回条数;不能把“显示两条”解释成 collection 里只有两条。Filter、Project 与 Limit 的字段语法见官方说明。
还可以在同一 collection 的 Aggregations 页切换到 Text View,输入下列 pipeline 并点击 Run;官方 Aggregation Builder 说明列出 Text View 与 Run 的操作。结果应为 _id: "PAID"、orders: 2、total: 200。预览可能只展示样本,正式运行结果才用于这次小数据集核对;实际业务库必须先限制输入范围与成本。
[
{ $match: { status: "PAID" } },
{ $group: { _id: "$status", orders: { $sum: 1 }, total: { $sum: "$amount" } } }
]readOnly 模式会隐藏 Compass 的插入入口,不能在此模式中声称“点击插入并看到数据库拒绝”。用同一个只读账号另开终端进入 mongosh,按提示输入 compass_reader 密码,再执行负例;预期打印 Unauthorized,若插入成功则角色或连接身份不符合实验条件,立即停止使用该档案并检查 authSource 与用户角色。
docker exec -it compass-learning mongosh \
'mongodb://127.0.0.1:27017/compass_lab?authSource=compass_lab' \
--username compass_reader --passwordlet rejected = false
try {
db.orders.insertOne({ orderNo: "C-DENIED", status: "PAID", amount: 1 })
} catch (error) {
if (error.codeName !== "Unauthorized") throw error
rejected = true
print(error.codeName)
}
if (!rejected) throw new Error("只读账号意外获得写入权限")实验结束后,在 Compass 断开连接并检查是否保存了临时档案。以下删除仅用于本次合成实验:先核对容器标签、卷标签,以及容器 /data/db 实际挂载的卷名;任一检查不符就停下。确认不需保留四条样本和账号后,输入完整容器名才删除容器与卷。若另存了导出文件,应单独清理其目标目录;删除数据库卷不会删除工作站上的导出副本。
test "$(docker inspect -f '{{index .Config.Labels "article-lab"}}' compass-learning)" = mongodb-compass || exit 1
test "$(docker volume inspect -f '{{index .Labels "article-lab"}}' compass-learning-data)" = mongodb-compass || exit 1
test "$(docker inspect -f '{{range .Mounts}}{{if eq .Destination "/data/db"}}{{.Name}}{{end}}{{end}}' compass-learning)" = compass-learning-data || exit 1
read -r -p '确认删除合成实验,请输入完整容器名 compass-learning: ' CONFIRM_NAME
test "$CONFIRM_NAME" = compass-learning || exit 1
docker rm -f compass-learning
docker volume rm compass-learning-data
unset COMPASS_READER_PASSWORD连接 URI、认证库与文档浏览
Compass 用图形界面浏览 MongoDB 文档、构建聚合、检查索引与执行计划。建立连接时,URI 指定部署入口,authSource 指定认证库,默认 database 决定首次浏览的位置。Atlas SRV 地址还需要解析出节点;连接完成后应核对 Replica Set 与 read preference,避免把从副本读取的旧数据误认为写入失败。
连接档案至少要能回答五件事:目标环境是什么,URI 最终解析到什么部署,用户在哪个 database 完成认证,连接后的默认 database 是什么,当前会话允许读写哪些对象。环境颜色和连接名称只是视觉护栏,服务端用户与 role 才决定请求会被允许还是拒绝。即使 Compass 开启了 readOnly,服务端仍应给排障身份分配 read 或更窄的自定义角色;反过来,一个拥有写权限的账号不会因为界面看起来克制就变成只读账号。
Compass 是独立桌面产品,有自己的安装、升级、Saved Connections、本地日志、界面设置与导出文件生命周期。MongoDB Shell 的终端脚本、退出码和历史治理放在 MongoDB 与 mongosh 中维护。两者可以验证同一部署,却不应继续挤在一篇交替教程里。
安装与更新要跟服务端解耦
Compass 从 Download and Install Compass 选择与操作系统和 CPU 架构匹配的安装包。服务端、驱动、Compass、MongoDB Shell 与 Database Tools 分别发布,不能拿 Server 版本号猜测桌面客户端的功能与兼容性。团队资产记录应保存安装来源、实际版本、操作系统、扩展策略和升级复核结果,正文则只保持长期边界,不把某个短期版本写成永恒基线。
安装完成后先打开 About 或命令行启动信息确认实际版本,再用一套可删除的开发库完成连接、查询、计划与导出回归。升级验证不只看窗口能否启动,还要检查 Saved Connections 是否仍能解析、企业 CA 是否生效、代理或 SSH 路径是否可用、Query Bar 与 Explain 是否按预期工作,以及本地设置和导出目录有没有被迁移到意外位置。
Readonly Edition 已处在退出路径。需要只读桌面工作面时,应使用标准 Compass、服务端 read 角色与 Compass readOnly 设置组合。这个组合的关键是:界面减少误触,数据库拒绝越权,两道约束各自可以独立验证。
把连接串还原成网络、身份和拓扑
下面的 URI 只是结构示例,不能直接保存真实用户名、域名或凭据:
mongodb://app_reader@mongo-a.example.test:27017,mongo-b.example.test:27017/app?authSource=admin&replicaSet=rs0&tls=true&readPreference=primaryPreferredURI path 中的 /app 是连接后的默认 database,authSource=admin 表示凭据在哪个 database 校验。两者可以不同。缺少或误写 authSource 时,错误通常表现为“密码明明正确却认证失败”;换管理员账号只是绕过了问题,也把 Documents、Indexes、Import 与删除入口暴露给了排障会话。
mongodb:// 后的 host 列表是拓扑发现的 seed,不代表请求永远发往第一个地址。驱动握手后会学习 Replica Set 成员。replicaSet=rs0 会校验发现到的部署身份;名称不一致时,应查连接模板和服务端配置,不能用 directConnection=true 长期掩盖发布地址或容器网络错误。
mongodb+srv:// 依赖 DNS SRV,并可能从 TXT 记录读取允许的连接选项。排查 Atlas 或自建 SRV 时,要把 DNS、目标端口、代理、证书、Atlas IP Access List 与数据库角色分开。IP Access List 只处理网络准入,不授予 collection 访问权;数据库用户通过认证,也不意味着开发机网络一定被允许。
Compass 的 Advanced Connection Options 可以分别设置 Authentication、TLS/SSL、Proxy/SSH 和更多连接参数。这样做还有一个现实好处:官方连接文档明确提醒,直接进入连接串编辑状态时,凭据可能按明文显示;敏感密码应在 Authentication 区域填写,演示和录屏前则应先换成无凭据模板。
TLS 连接要校验证书链和主机身份。关闭证书或主机名验证只能用于隔离诊断,不能留在 Saved Connections。SSH tunnel 解决的是客户端到目标网络的路径,不会替代 MongoDB 身份验证;堡垒机账号、私钥、known hosts、端口转发和会话审计仍然属于独立控制面。代理也可能改变 DNS 解析位置,出现“本机能解析、Compass 不能连”时,先确认代理实际接管了哪一段流量。
Saved Connections 是资产,不是书签
Compass 可以给连接命名、着色、设为 Favorite,并保存在 Saved Connections 中。这些字段应表达环境与责任,例如“订单生产只读”比“mongo-prod”更有判断力。颜色只能辅助识别,不能替代 server address、database、认证身份和 Replica Set 的会话内复核。
连接模板优先保存不含密码的 URI。若组织允许桌面保存凭据,也要确认操作系统用户边界、设备加密、离职回收与客户端导出策略。Saved Connections 可以导出并分享,官方文档特别说明:未加密的导出默认可能包含明文密码。需要迁移连接时应使用口令加密,单独传递口令,并在导入后轮换临时凭据。即便导出文件已加密,其中的主机名、库名和连接命名也可能暴露内部拓扑,不能随手进入工单附件或公共网盘。
导入连接若遇到同名项,可能覆盖已有 Saved Connection。团队迁移前应先导出当前档案并记录目标清单,导入后逐项核对环境、用户名、TLS 和 readOnly,不要把“导入成功”当作连接语义未变化的证据。
| 连接层 | Compass 中的证据 | 常见误判 | 应有的裁决 |
|---|---|---|---|
| 网络 | SRV、host、port、proxy、SSH | 能打开 Atlas 就等于数据库可达 | 实际连接路径和准入规则 |
| TLS | CA、客户端证书、主机名 | 加密连接等于验证了目标身份 | 证书链与主机名校验 |
| 认证 | username、mechanism、authSource | 密码正确就该连接成功 | 凭据所属认证库与机制 |
| 拓扑 | Replica Set、实际节点、read preference | seed host 就是最终读节点 | 驱动发现后的部署身份 |
| 授权 | database、collection、role | readOnly 开关就是权限 | 服务端 privilege 的允许与拒绝 |
进入 Documents 前做一次只读正反验证
标准 Compass 中可以启用 readOnly,但验收必须同时观察服务端拒绝。使用专门的排障身份连接目标 database,先在 Documents 中执行窄过滤并读取少量字段;再像前面的实验那样,使用同一数据库身份从独立客户端向一次性 collection 发出受控写请求。前者应成功,后者应得到授权失败。Compass 的 readOnly 会隐藏写入入口,不能用“按钮消失”冒充服务端拒绝;若独立客户端写入成功,应检查账号 role 和实际认证身份。
Compass 功能所需权限并不完全相同。查看 Documents 与 Schema 主要依赖读取能力,实例性能视图可能需要 clusterMonitor 提供的命令权限,创建 collection、索引或删除对象需要更高 privilege。不要为了让 Home 页面所有卡片都亮起来就给数据排障人员管理员角色。缺少某个面板能力时,先查 Compass Required Access,再决定是临时授权、改用别的证据,还是接受该面板不可用。
Compass 的连接级 readOnly 适合降低界面误触,服务端最小权限负责真正阻断,临时提权则承载确实需要的变更。三者合起来比“大家共享一个管理员 Saved Connection,靠操作前再确认”可靠得多。
Query Bar 先缩小证据,再扩大视野
Documents 工作面适合观察 BSON 文档,但默认打开 collection 就浏览并不是低成本动作。Query Bar 应先写 Filter,再用 Project 收窄字段,用 Sort 和 Limit 控制结果集。带大数组、大字符串或敏感字段的 collection,投影比在桌面上滚动整篇文档更重要:它减少网络传输、渲染压力和截屏泄露,也让评审者知道这次排障究竟依赖哪些字段。
Filter 使用 MongoDB 查询语义。时间、ObjectId、Decimal128 等 BSON 类型不能一律当普通字符串处理;一条在视觉上相似的过滤,可能因为类型不同而完全不命中。Compass 提供的类型化编辑能力适合探索,最终证据仍要记录 collection、Filter、Project、Sort、Limit、read preference 与观察到的节点,避免只留一张没有上下文的结果截图。
对生产大 collection,先从唯一键、时间窗口或已有索引前缀进入。正则、无界排序和宽投影可能把一次“看看数据”变成 collection scan、内存排序和大结果传输。结果少不代表扫描少,返回快也不代表高并发下安全,是否走索引要交给 Explain Plan 判断。
Documents 的图形编辑入口很方便,也因此危险。编辑单个文档仍是正式写入,会触发 schema validation、唯一索引、change stream 和下游业务。生产排障身份不应拥有这项权限;确需修复时,应把变更条件、目标 _id、修改前后值、回滚语句和审批号带进独立变更流程,而不是在结果表上临时点 Save。
Explain Plan 不是一张“用了索引”的绿牌
Compass 的 Explain Plan 把服务端查询计划可视化。首先看输入是否与真实问题一致:collection、Filter、Sort、Project、Limit 和 collation 少一项,计划就可能不是应用正在执行的那条。随后再看 winning plan、扫描键数、扫描文档数、返回文档数和耗时。IXSCAN 只说明某一阶段用了索引;如果随后仍读取大量文档、排序或过滤,查询依然可能昂贵。
executionStats 会实际执行候选查询,不是免费的静态分析。在大 collection 或复杂 Aggregations 上,它可能消耗 CPU、内存和临时磁盘。先用窄条件和 queryPlanner 建立方向,再在容量允许且有观察窗口时采集执行统计。生产证据还应与应用慢查询、服务端 profiler 或监控时间窗对齐,单次桌面执行不能替代负载下的延迟分布。
如果计划选择出乎预期,先检查数据分布、复合索引字段顺序、排序方向、collation 与类型,而不是立即新建索引。Indexes 页面能展示现有索引并提供管理入口,但创建与删除索引属于结构变更,会影响写放大、存储、构建资源和回滚路径。Compass 可以帮助审阅,不应绕过数据库变更治理。
Schema 是样本观察,不是数据库契约
Schema 工作面通过采样分析字段、类型、分布与常见值。它很适合发现同一字段混入字符串和数字、数组结构漂移或稀疏字段,但不能证明未采样文档也符合相同结构。collection 很大、字段很多或网络很慢时,Schema 分析本身也会产生读取与本地处理成本。
把 Schema 结果当作提出问题的线索,而不是宣告“这就是完整 schema”。真正的写入约束来自 collection validator、应用校验与迁移流程;Schema 采样则用来发现现实数据是否偏离预期。两者结合时,先保存采样条件与时间窗口,再将异常字段回到精确查询复核,避免根据一张分布图直接修改 validator。
敏感库还要考虑数据最小化。字段名、类型和少量样本也可能揭示用户身份、支付状态或内部风控逻辑。Schema 页面、截图、导出和演示录屏都属于数据副本,应受同一数据分类与保留期限约束。
Aggregations 适合推演,不适合无边界试跑
Aggregations 工作面可以逐阶段构建 pipeline、预览中间结果并保存草稿,这比一次写完长 pipeline 更容易看清语义。安全起点通常是有选择性的 $match 和受控 $project,然后才进入 $group、$sort、$lookup 或窗口计算。前置过滤既是性能策略,也是减少桌面暴露数据的策略。
中间预览不代表完整运行成本。样本结果可能掩盖基数爆炸、跨 collection 连接、排序内存和磁盘溢写。涉及 $out 或 $merge 的 pipeline 会写数据,不能因为它位于“分析”页面就按只读操作处理。生产账号的 role 应直接阻断此类写入,变更场景则先在隔离数据集验证目标 collection、唯一键和回滚方式。
当 pipeline 准备进入应用代码时,应导出或复制为驱动可用结构,进入版本控制、测试与代码评审。Compass 草稿适合探索,不是团队唯一真源;只留在某台开发机上的 Aggregation 无法解释版本、输入和失败处理。
导入导出会把数据库边界搬到桌面
Compass 可以导出整个 collection、过滤后的查询结果或 Aggregation 结果,也可以选择 JSON 或 CSV。CSV 适合与表格工具交换简单平面数据,却会丢失 BSON 类型信息,不应作为备份。JSON 导出要理解 Extended JSON:默认与 Canonical Extended JSON 更强调类型保真,Relaxed Extended JSON 更易读,却可能在往返转换时损失类型。ObjectId、Date、Decimal128 与长整数尤其不能只看文本长得像不像。
导出前先在 Query Bar 固定 Filter 与 Project,确认行数、字段、目标目录和销毁时间。导出文件离开服务端后,不再受 MongoDB role、审计与网络边界保护;操作系统权限、磁盘加密、备份软件、同步盘和工单附件都可能复制它。真正的完成条件不是进度条结束,而是接收人、用途、保存位置、哈希或行数校验、到期删除都可追踪。
导入会执行真实写入,并可能触发 validator、唯一索引与类型转换。CSV 字段映射、空值和数字推断尤其容易改变语义。正式数据迁移应使用可审计脚本或 MongoDB Database Tools,带上校验、重试和恢复设计;Compass 导入更适合小规模、明确结构、可删除的开发数据。任何“先导进去看看”的操作都需要隔离 collection 和清理路径。
本地状态、遥测与 AI 功能也在数据流里
Compass 不只有数据库连接。Saved Connections、Favorite、最近使用信息、查询与 Aggregation 草稿、日志、导出目录、截图和系统凭据存储共同构成桌面状态。卸载应用不保证这些资产自动消失,设备交接和离职流程必须单独检查用户配置目录、操作系统凭据、下载目录、同步盘与临时文件。
Settings 中的 telemetry 与隐私选项应按组织政策配置。Compass 还可能提供自然语言查询或其他 AI 辅助能力;启用前要阅读 Compass AI and Data Usage 的数据流说明,确认目标数据等级、传输区域和组织批准。官方集成功能不等于自动取得敏感数据出境许可。
日志适合定位窗口启动、连接和运行时问题,也可能保留主机、库名、错误信息与路径。提交支持工单前先做脱敏,保留能解释问题的最小时间窗。关闭 telemetry 或日志是隐私与运维取舍,不会替代服务端审计,更不会撤销已保存的数据库身份。
大结果和长会话会把桌面变成瓶颈
Compass 位于用户工作站,服务端返回的数据还要经过网络、驱动、Electron 进程和界面渲染。大结果集可能让窗口卡顿,却不代表数据库本身已经耗尽;反过来,界面仍能滚动也不说明查询对集群没有压力。排障时要同时观察服务端扫描量、客户端接收量与本机资源,避免只凭桌面体感判断性能。
长时间打开多个标签会积累连接与上下文。环境切换前关闭不再使用的标签并主动断开连接,尤其不要让管理员临时会话混在只读窗口里。需要长跑、定时或可机器判断的任务时,Compass 不是合适执行器,应回到 mongosh 脚本、驱动程序或受管作业,让超时、重试、退出码和日志进入自动化边界。
退出不是关掉窗口
一次临时排障结束后,先保存真正需要的 Filter、Explain 与变更证据,删除本地样本和无用截图,再从 Saved Connections 移除临时凭据。若导出过连接档案或业务数据,要按记录检查所有副本是否销毁。随后撤销临时数据库用户、Atlas IP Access List、证书、OIDC 授权或 SSH key,并重新验证旧入口确实失败。
共享设备还要确认操作系统用户是否隔离,浏览器 SSO 是否退出,密码管理器与系统凭据是否回收。只关闭 Compass 不会让 Atlas 用户、网络准入或本地导出过期;只删除 Atlas 用户也不会擦掉已经落盘的数据。数据库侧和桌面侧必须分别完成退出。
权威资料与规范地址
安装与数据库权限
Start Compass from the Command Line
Restrict Write Operations to MongoDB
查询与聚合
Create an Aggregation Pipeline
