Docs 菜单
Docs 主页
/ /
Atlas App Services
/

文档原像

在此页面上

  • Overview
  • 性能
  • 启用文档原像
  • 查看启用原像的collection
  • 禁用collection的原像

每个数据库触发器执行都有一个相关的变更事件。 您可以配置这些变更事件以包含文档原像。 原像是文档在更改之前的快照。

例子

考虑在具有原像的collection中的 updateOne

pets.updateOne(
{ name: "Fido" },
{ $inc: { age: 1 } }
)

原像将以下数据添加到写入操作变更事件

  • fullDocumentBeforeChange字段中的文档原像

    原像 - 更改之前存在的完整文档
    {
    "name": "Fido",
    "age": 3
    }
  • fullDocument字段中的文档后图像

    后映像 - 更改后的完整文档
    {
    "name": "Fido",
    "age": 4
    }

对于运行MongoDB 6.0及更高版本的集群,触发器使用集群的内置变更流原像功能。 旧版本的MongoDB将原像直接存储在oplog中。 这两种操作都会增加集合上每个操作的存储和计算开销,这可能会导致具有高写入吞吐量的集合出现性能问题。

您可以在配置数据库trigger时启用原像。 Document Preimage是trigger配置上的设置。切换此选项可为collection启用文档原像。

要查看存储文档原像的collection列表,请执行以下操作:

  1. 导航至Linked Data Source配置屏幕。

  2. 展开 Advanced Configuration 部分。

本部分包含Preimage Preferences by Collection表。

此表列出了在 oplog 中存储原像的每个集合。 为集合启用原像会应用于所有集合。 这包括与不同应用中的Atlas Triggers绑定的collection。不带使用原像的Atlas Triggers的collection也会出现在此处。

您可以在 App Services 用户界面中禁用集合级原像。

要禁用collection的原像,请执行以下操作:

  1. (可选)为collection中的Atlas Triggers禁用文档原像。禁用原像后,带有原像的Atlas Triggers会继续触发。但变更事件中没有fullDocumentBeforeChange字段。这包括其他 App Services 应用程序中的 Atlas Triggers。

  2. 如果collection是同步集群的一部分,则终止同步

  3. 查看“原像偏好(按集合)”表。 按Disable按钮进行集合。 这会关闭该集合的原像。

  4. 如果collection是同步集群的一部分,请重新启用 Sync

警告

终止同步后恢复同步

当您终止并重新启用 Atlas Device Sync 时,客户端将无法再同步。您的客户端必须执行客户端重置处理程序才能恢复同步。此处理程序可以放弃或尝试恢复未同步的更改。

后退

传输协议