跳转到内容
文档

测试手册 — NoSqlStudio Watch

用于打开、使用和验证 Watch 实时 change-stream 界面的分步指南。

预计时间: 约 20 分钟
本手册目录

简介

一份分步指南,帮助你打开、使用并验证 Watch 界面 — NoSqlStudio 内置的实时 change-stream 监视器。请按顺序从 Step 1 走到结尾。每个步骤都会告诉你该做什么以及会看到什么

如何阅读本手册

每个步骤包含:

  • 操作 — 准确的动作(点击、输入、运行某条命令)。
  • 查看 — 屏幕上应该发生什么。这就是你的“通过 / 失败”。
  • 原因 — 额外的上下文,仅在有帮助时出现(赶时间可以跳过)。

开始之前

概念

Watch 是什么

Watch 将数据库中正在发生的每一次插入、更新、删除以及其他变更实时显示出来,以卡片的形式滑入时间线中。它基于 MongoDB change streams 构建。

注意

Watch 需要 replica set

Change streams 是 replica set 的特性。Watch 支持 MongoDB Atlas 集群以及自托管的 replica sets,但不支持 standalone 服务器。将 Watch 指向 standalone 服务器的情况会在 Step 30 中讲到。

你需要:

  1. 1一个已连接的 MongoDB replica set — 一个 Atlas 集群或一个自托管的 replica set。
  2. 2另一个可以运行 shell 命令的标签 — ScratchpadMongo Shell 标签 — 用来产生变更。
  3. 3在下方的 shell 命令中,把 <database><collection> 替换成你自己的名称。请始终先执行 use <database>,确保命令作用于正确的数据库。

完整走读预计时间:约 20 分钟

阶段 1

你的第一条被监视的变更

打开 Watch 并确认一条变更能抵达时间线。

步骤 1

连接到 replica set

操作

用你的 connection string 把 NoSqlStudio 连接到 MongoDB replica set 或 Atlas 集群 — 例如 mongodb+srv://<user>:<password>@<cluster-host>/

查看

连接打开,并出现在侧边栏中。

步骤 2

打开 Watch Deployment

操作

在工具栏中选择 Monitoring ▼ → Watch for Changes → Watch Deployment

查看

会出现一个新选项卡,带有 🎥 标题、一颗持续脉动的绿色 LIVE 状态药丸,以及集群的迷你地图,绿色的 PRIMARY 节点显示在其 secondaries 旁边。

步骤 3

插入一个测试文档

操作

在另一个选项卡(Scratchpad)中,选择一个数据库并插入一个文档。请先执行 use 命令:

js·2 linhas
use <database>
db.test_cw.insertOne({ hello: "test1", n: 1 })
步骤 4

看变更到达

操作

切回 Watch 选项卡。

查看

大约一秒钟内,一张针对 <database>.test_cw 的绿色 🟢 Insert 卡片从时间线顶部滑入。

原因

这是该工具的核心 — 实时流已经连上并在传送变更。✅

阶段 2

过滤与导出

步骤 5

在多个集合中产生流量

操作

在不同集合上运行几次 insert:

js·4 linhas
use <database>
db.orders.insertOne({ item: "book" })
db.users.insertOne({ name: "Ana" })
db.test_cw.insertOne({ n: 1 })
查看

每次 insert 都会滑入一张卡片。

步骤 6

过滤时间线

操作

在标题栏的 🔍 filter 字段中输入一个集合名(例如 orders)。

查看

只有命名空间匹配该文本的事件会保持可见。清空该字段即可重新显示全部内容。

步骤 7

导出事件

操作

清空过滤后,点击 📥 Export

查看

可见的事件会被保存为 .ndjson 文件到你的 Downloads 文件夹。

概念

NDJSON。 每行一个 JSON 文档 — 一种适合事件流的自然格式,便于重新导入或 grep。

阶段 3

录制与回放

步骤 8

开始一段录制

操作

在右侧面板中找到 🎬 Recording 卡片,把开关打开。

查看

卡片切换到录制状态。

步骤 9

在录制过程中产生事件

操作

在另一个选项卡中执行几次变更:

js·4 linhas
use <database>
db.test_cw.insertOne({ n: 1 })
db.test_cw.insertOne({ n: 2 })
db.test_cw.insertOne({ n: 3 })
查看

卡片显示实时计数,例如 recording • 3 events

步骤 10

停止录制

操作

关闭 🎬 Recording 开关。

查看

录制会自动作为 .ndjson 文件下载。

步骤 11

从文件回放录制

操作

点击 📂 Open recording 并选择刚才保存的 .ndjson 文件。

查看

标题栏会出现一个紫色的 📂 replay (file) 徽标,录制的事件回到时间线。

步骤 12

退出回放模式

操作

点击紫色 replay 徽标上的

查看

回放模式结束,实时流恢复。

步骤 13

回放最近的过去

操作

在 ⏪ Replay 卡片上点击 Go back 5 minutes

查看

流会从过去几分钟开始重新打开,你能看到已经发生过的变更。

注意

仅当集群的 oplog 仍然保留这么长的历史时才有效。在繁忙的集群上,oplog 的时间窗口可能不到 5 分钟。

阶段 4

Webhooks 与告警

Watch 能把变更转发到外部 URL,并按规则弹出桌面告警。

步骤 14

获取一个测试 webhook URL

操作

在浏览器中打开 https://webhook.site,复制它给你的唯一 URL(格式 https://webhook.site/<uuid>)。

步骤 15

添加 webhook

操作

在 📡 Webhooks 卡片中粘贴 URL 并点击 + Add

查看

webhook 出现在列表中。

步骤 16

配置 webhook

操作

点击 webhook 上的 ⚙ 展开其设置。把 HTTP 方法改为 PUT,添加一个 Authorization 头,值为 Bearer xxx,并在事件芯片中仅选择 🔴 Delete

查看

webhook 现在被配置为仅在 delete 时触发,以一个 PUT 请求携带你的请求头发送。

步骤 17

Insert — 不会转发任何内容

操作

执行一次 insert:

js·2 linhas
use <database>
db.test_cw.insertOne({ foo: 1 })
查看

webhook.site 没有收到任何内容 — webhook 已被过滤为仅 delete。

步骤 18

Delete — webhook 触发

操作

执行一次 delete:

js·2 linhas
use <database>
db.test_cw.deleteOne({ foo: 1 })
查看

webhook.site 收到一个 PUT 请求,带有 Authorization: Bearer xxx 头,正文中是 EJSON 格式的变更事件。卡片显示 ✓ 1 sent

步骤 19

创建一个告警

操作

在 🔔 Alerts 卡片中,给告警起个名字(例如 Deleted test),把命名空间模式设置为一个正则表达式 — ^.*\.test_cw$ — 然后点击 + Create alert

查看

告警出现在列表中。

步骤 20

缩小告警范围

操作

点击告警上的 ⚙,在事件芯片中仅选择 🔴 Delete

查看

告警现在只会在匹配模式的 delete 上触发。

步骤 21

触发告警

操作

再执行一次 delete:

js·2 linhas
use <database>
db.test_cw.deleteOne({ n: 1 })
查看

第一次时,系统会请求通知权限 — 允许一次即可。接着会出现一条原生桌面通知,播放一段声音,告警历史也会记录这次命中。

概念

告警工作并需要录制处于打开状态 — 告警是独立评估的,其历史也是独立保留的。

阶段 5

声音与集群迷你地图

步骤 22

打开声音

操作

在标题栏点击 🔔 Sound off,使其变为 Sound on

步骤 23

听一次 insert

操作

执行一次 insert:

js·2 linhas
use <database>
db.test_cw.insertOne({ n: 10 })
查看

播放一声短促的音。

步骤 24

听一次 delete

操作

执行一次 delete:

js·2 linhas
use <database>
db.test_cw.deleteOne({ n: 10 })
查看

播放一声音 — 与 insert 不同的音高,这样你可以靠声音区分变更。

步骤 25

看迷你地图脉动

查看

在集群迷你地图中,每当一个事件到达,绿色的 PRIMARY 节点都会以一圈扩散的环脉动一次。

阶段 6

行为与边界情况

步骤 26

持久化

操作

关闭 Watch 选项卡(标签标题上的 ),再从菜单重新打开它。

查看

你的 webhooks、告警、声音设置和 buffer 大小全部仍在。

步骤 27

刷新数据库列表

操作

在另一个选项卡中创建一个新数据库,然后点击 Watch 标题栏中的 🔄 Refresh

查看

新数据库出现在 scope 下拉中。

步骤 28

buffer 大小

操作

在标题栏的 Buffer 字段中输入 50

查看

只有最近 50 条事件保持可见 — 更早的卡片会被丢弃。

步骤 29

切换 scope 时清空

操作

在 🌐 Cluster scope 上有一个流正在运行时,切到 🗄 单个数据库

查看

时间线被清空,流在新 scope 下重新启动。

步骤 30

对 standalone 给出人性化错误

操作

连接到一个 standalone 的 MongoDB 服务器(而不是 replica set),并尝试 Watch Deployment

查看

一条清晰、友好的提示说明 Watch 需要 replica set — 而不是像 “$changeStream stage is only supported…” 这样的原始服务器错误。

阶段 7

原生 Tools 菜单

步骤 31

从 Tools 菜单打开 Watch

操作

使用原生菜单:Tools → Change Watcher → Watch Deployment(快捷键 Ctrl+Alt+W)。

查看

Watch 选项卡打开,与从工具栏打开完全一致。

注意

原生菜单在应用启动时构建。在应用内 reload(Ctrl+R)之后,菜单可能已过时 — 完整重启 NoSqlStudio 才能看到菜单变化。

清理(完成后)

操作

用标题栏的 Stop 按钮停止流,然后删除测试集合:

js·2 linhas
use <database>
db.test_cw.drop()
查看

流被停止,测试集合被删除。

你已验证内容的总结

阶段功能
1打开 Watch 并看到一条实时变更抵达时间线
2过滤时间线并将事件导出为 NDJSON
3录制事件、从文件回放,以及回放最近的过去
4Webhooks(方法、请求头、事件过滤)与桌面告警
5按事件类型的声音提示,以及集群迷你地图的脉动
6持久化、刷新、buffer、切换 scope 时的清空、人性化错误
7原生 Tools 菜单入口及其快捷键
如果每个步骤都给出了预期的“查看”结果,那么 Watch 界面已 100% 验证通过。请把任何不一致的步骤编号记下来,以便我们修复。