跳转到内容
文档

Schema Diff

并排 schema 形状比较器,发出幂等 mongosh 迁移脚本。用作 PR gate 或在重大重构之前。

它是什么

一个 workspace tab,比较两个 schema 形状(粘贴 JSON 或从实时连接采样)并在并排面板中渲染差异。Migration tab 发出一个 mongosh 脚本,您可以在 target 上运行以使其匹配 — 可安全重新运行,因为每步都是幂等的。

何时使用

接入为 PR gate,使队友无法在没有生成的迁移计划的情况下提交 schema 变更。在重大重构之前运行,以查看分支之间字段和类型的确切差异。在刷新后运行,以确认 dev / staging 与生产匹配。

如何打开

  1. 在 NoSqlStudio 桌面应用中,打开 Tools 菜单 → Schema Diff,或按 Ctrl+Alt+Shift+D。
  2. workspace 打开,顶部有两个粘贴区域(Source 和 Target),中间是 diff 面板,底部是 Migration tab。
  3. 粘贴两个 schema 形状(样本文档也可以 — engine 推断形状)并点击 Compare。

工作流

  1. Source — 粘贴所需的 schema 形状(通常是生产样本或重构后的 target)。
  2. Target — 粘贴接收 cluster(dev 或 staging)上的当前形状。
  3. Diff — engine 渲染添加的字段(绿色)、删除的字段(红色)和类型变更(黄色)。点击任意行以查看实际字段路径和推断的 BSON 类型。
  4. Migration — 切换到 Migration tab。engine 发出一个使用 $set/$unset/$rename + collMod 进行索引更改的 mongosh 脚本。脚本是幂等的 — 在已收敛的 target 上运行它是 no-op。
  5. 复制或下载脚本。在 target 上从 mongosh 运行,然后重新运行 Compare 以确认 diff 为空。

限制(v1)

  • 推断基于样本。如果您的 schema 有未出现在样本中的稀有分支,engine 会错过它们 — 设置样本大小以覆盖代表性文档。
  • 迁移脚本处理字段和索引;它不处理 views、search indexes 或 time-series collections。单独接入这些。
  • 无事务保证 — 生成的脚本独立运行每一步。对于多文档一致性,您必须自己将其包装在 session.startTransaction 块中。