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

trigger配置文件

在此页面上

  • 常规配置
  • 数据库触发器
  • 身份验证触发器
  • 定时触发器
app/
└── triggers/
└── <trigger name>.json

所有Atlas Triggers都符合具有特定变体的基本模式,具体取决于trigger类型。所有trigger配置文件中都存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "<Trigger Type>",
"disabled": <Boolean>,
"config": {},
"event_processors": {
"<Type of Event Processor>": {
"config": {}
}
}
}
字段
说明
name
string
trigger名称。长度最多为 64 个字符,并且只能包含 ASCII 字母、数字、下划线和连字符。
type
string

trigger类型。该字段的值决定了确切的配置文件模式。

有效选项:

  • "DATABASE"

  • "AUTHENTICATION"

  • "SCHEDULED"

disabled
boolean
默认为false 。 如果为true,trigger将不会侦听任何事件,也不会触发。
config
object

一个文档,其中包含映射到trigger其他配置选项的字段。确切的字段取决于triggertype

event_processors
object

一个文档,用于配置trigger以在触发时将事件发送到事件处理器。

有效选项:

  • “功能”

  • "AWS_EVENTBRIDGE"

有关函数的更多信息,请参阅Realm 函数。

有关 AWS EventBridge 的更多信息,请参阅向 AWS EventBridge 发送触发事件。

event_processors.config
object

包含映射到事件处理器其他配置选项的字段的文档。确切的配置字段取决于事件处理器类型:

数据库触发器配置符合基本trigger模式,并带有附加配置选项,这些选项指定要监视的collection以及何时触发trigger。

数据库触发器配置文件中存在以下字段。根据事件处理器类型,有两种可能的配置:

  • FUNCTION

  • AWS_EVENTBRIDGE

带有函数事件处理器的数据库触发器

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "DATABASE",
"disabled": <boolean>,
"config": {
"service_id": "<MongoDB Data Source Service ID>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"operation_types": ["<Operation Type>", ...],
"full_document": <boolean>,
"full_document_before_change": <boolean>,
"tolerate_resume_errors": <boolean>,
"unordered": <boolean>,
"match": { <Match Filter> },
"maximum_throughput": <boolean>,
"skip_catchup_events": <boolean>,
"project": { <Projection Filter> },
},
"event_processors": {
"FUNCTION": {
"config": {
"function_name": "<Function Name>"
}
}
}
}

使用 AWS EventBridge 事件处理器的数据库触发器

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "DATABASE",
"disabled": <boolean>,
"config": {
"service_id": "<MongoDB Data Source Service ID>",
"database": "<Database Name>",
"collection": "<Collection Name>",
"operation_types": ["<Operation Type>", ...],
"full_document": <boolean>,
"full_document_before_change": <boolean>,
"tolerate_resume_errors": <boolean>,
"unordered": <boolean>,
"match": { <Match Filter> },
"maximum_throughput": <boolean>,
"skip_catchup_events": <boolean>,
"project": { <Projection Filter> },
},
"event_processors": {
"AWS_EVENTBRIDGE": {
"config": {
"account_id": "<AWS Account ID>",
"region": "<AWS Region>",
"extended_json_enabled": <boolean>
}
}
},
"error_handler": {
"config": {
"enabled": <boolean>,
"function_name": "<Error Handler Function Name>"
}
}
}
字段
说明
config.service_id
string
包含监视集合的MongoDB数据源的唯一标识符。 您无法在trigger 无服务器实例 联合数据库实例 上定义数据库 。
config.database
string
包含监视collection的 MongoDB database 的名称。
config.collection
string
trigger监视的collection的名称。
config.operation_types
string[]

导致trigger触发的一个或多个数据库操作类型的列表。

所有Atlas Triggers的有效操作类型:

  • "INSERT"

  • "UPDATE"

  • "REPLACE"

  • "DELETE"

数据库和部署触发器的有效操作类型:

  • "CREATE_COLLECTION"

  • "MODIFY_COLLECTION"

  • "RENAME_COLLECTION"

  • "SHARD_COLLECTION"

  • "DROP_COLLECTION"

  • "RESHARD_COLLECTION"

  • "REFINE_COLLECTION_SHARD_KEY"

  • "CREATE_INDEXES"

  • "DROP_INDEXES"

仅适用于部署Atlas Triggers的有效操作类型:

  • "DROP_DATABASE"

提示

从 MongoDB Compass 或 MongoDB Atlas 数据浏览器执行的更新操作会完全替换之前的文档。 因此,这些客户端的更新操作将生成REPLACE更改事件,而不是UPDATE事件。

config.full_document
boolean

如果true ,则UPDATE 更改事件包括在 字段中应用更改 已修改文档的最新 多数提交fullDocument 版本。

注意

无论此设置如何, INSERTREPLACE事件始终包含``fullDocument`` 字段。 DELETE 事件从不包含 fullDocument 字段。

config.full_document_before_change
boolean

如果true ,则更改事件包括在fullDocumentBeforeChange字段中应用更改之前的已修改文档的副本。 除INSERT事件之外的所有更改事件都包含文档原像。

重要

集合级原像设置

文档原像使用存储在 oplog 中的额外信息。 额外的数据可能会对某些应用的性能产生影响。

为给定集合上的任何触发器启用文档原像后,该集合将在 oplog 中包含原像数据,并且该集合上的其他触发器可以使用原像,而不会产生额外开销。

您可以在每个触发器的基础上禁用文档原像,以将原像从变更事件中排除。 无论触发器级别设置如何,collection的 oplog 条目将继续包含原像数据,除非您明确禁用collection的原像。

有关更多信息,请参阅文档原像。

config.tolerate_resume_errors
boolean

如果为true,则在找不到处理change stream事件所需的令牌时,trigger会自动恢复。

如果启用,则当在集群的 oplog 中找不到此触发器的恢复令牌时,触发器会在下一个相关的变更流事件中自动恢复处理事件。从触发器暂停到触发器恢复执行的所有变更流事件都不会触发触发器。

有关恢复暂停的Atlas Triggers的更多信息,请参阅暂停的Atlas Triggers。

config.unordered
boolean

如果true ,则表示为此触发器禁用了事件排序。

如果启用了事件排序,此触发器的多次执行操作将根据更改事件的时间戳按顺序进行。如果禁用了事件排序,该触发器的多次执行操作将独立进行。

提示

性能优化

通过禁用事件排序来提高响应批量数据库操作的Atlas Triggers的性能。了解更多信息。

config.match
object

一个 $match 表达式文档,App Services 使用它来过滤哪些变更事件会导致触发器触发。触发器根据这个匹配表达式评估它收到的所有变更事件对象,仅当给定变更事件的表达式计算结果为 true 时才执行。

注意

对嵌入式字段使用点符号

MongoDB 对匹配表达式中的嵌入式文档执行完全等值匹配。如果要匹配嵌入式文档中的特定字段,请直接使用点符号引用该字段。请参阅 MongoDB Server 手册中的查询嵌入式文档,了解详情。

提示

性能优化

使用$match表达式限制trigger处理的字段数量。了解更多信息。

config.maximum_throughput
boolean
默认为false 。 如果为true ,则可以将最大吞吐量增加到超过默认的 10,000 个并发进程。 有关详细信息,请参阅最大化Atlas Triggers吞吐量。
config.skip_catchup_events
boolean
默认为false 。 如果为true ,则在禁用触发器后启用触发器不会调用禁用触发器时发生的事件。
config.project
object

一个$project表达式,用于从变更流中的每个事件中选择字段的子集。 您可以使用它来优化trigger的执行。

表达式是一个对象,可以将更改事件中的字段名称映射到 0(不包括该字段)或 1(包括该字段)。表达式的值可以是 01,但不能同时是 01。就是把投影分为两类,即包容性投影和排他性投影:

  • 包容性项目表达式指定要包含在每个更改事件文档中的字段。该表达式是一个对象,它将要包含的字段的名称映射到 1。如果不包含某个字段,则该字段不会包含在预计的更改事件中。

    例子

    以下投影仅包括 _idfullDocument 字段:

    {
    _id: 1,
    fullDocument: 1
    }
  • 独占项目表达式指定要从每个更改事件文档中排除的字段。该表达式是一个对象,它将要包含的字段的名称映射到 0。如果不排除某个字段,它将包含在预计的更改事件中。

    例子

    以下投影排除 _idfullDocument字段:

    {
    _id: 0,
    fullDocument: 0
    }

    注意

    您不能使用投影排除 operation_type 字段。这确保该触发器始终可以检查它是否应该针对给定事件的操作类型运行。

event_processors.config.account_id
string
Amazon Web Services 帐户 ID。有关如何查找帐户 ID 的更多信息,请参阅设置 MongoDB 合作伙伴事件源。
event_processors.config.region
string
一个 Amazon Web Services 地区。
event_processors.config.extended_json_enabled
boolean

false 默认情况下。 如果为true ,则启用扩展 JSON。

Atlas Triggers将事件对象中的BSON types转换为标准JSON类型。 要保留 BSON 类型信息,您可以将事件对象序列化为扩展 JSON 格式。 扩展 JSON 保留了类型信息,但牺牲了可读性和互操作性。

error_handler.config.enabled
boolean
如果为true ,则为 AWS EventBridge 触发器启用错误处理。 有关配置错误处理的更多信息,请参阅自定义错误处理。
error_handler.config.function_name
string
当 AWS EventBridge 触发器失败且无法成功重试时调用的错误处理程序函数的名称。

身份验证触发器配置符合基本trigger模式,并带有附加配置选项,这些选项指定要监视的身份验证提供商以及何时触发trigger。在身份验证触发器配置文件中存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "AUTHENTICATION",
"config": {
"operation_type": ["<Operation Type>", ...],
"providers": ["<Provider Type>", ...],
},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
config.operation_type
string

导致trigger触发的身份验证操作类型

有效操作类型:

  • "LOGIN"

  • "CREATE"

  • "DELETE"

config.providers
string[]

trigger监控的身份验证提供者类型列表。

有效的提供商类型:

  • "anon-user"

  • "local-userpass"

  • "api-key"

  • "custom-token"

  • "custom-function"

  • "oauth2-facebook"

  • "oauth2-google"

  • "oauth2-apple"

定时触发器配置符合基本触发器模式,附带指定触发器触发计划的附加配置选项。 定时触发器配置文件中存在以下字段:

triggers/<trigger name>.json
{
"name": "<Trigger Name>",
"type": "SCHEDULED",
"config": {
"schedule": "<CRON expression>"
},
"function_name": "<Trigger Function Name>",
"disabled": <Boolean>
}
字段
说明
config.schedule
string
安排触发器执行的CRON 表达式

后退

Atlas Device Sync