适用于 Azure Functions 的 Azure Cosmos DB for MongoDB (vCore) 触发器

本文介绍如何在 Azure Functions 中使用 Azure Cosmos DB for MongoDB vCore 触发器。 绑定使用 Azure Cosmos DB API for MongoDB 中的更改流 来侦听插入和更新。

更改源仅发布新的和更新的项。 当前不支持监视使用更改流删除操作。

重要

Azure Cosmos DB for MongoDB (vCore) 扩展目前为预览版。
目前仅支持使用 进程内模型的 .NET 应用。

示例:

此示例显示一个函数,该函数返回插入或更新的单个文档:

        [FunctionName("TriggerSample")]
        public static void TriggerRun(
          [CosmosDBMongoTrigger("TestDatabase", "TestCollection")] ChangeStreamDocument<BsonDocument> doc,
          ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

            log.LogInformation(doc.FullDocument.ToString());
        }

有关完整示例,请参阅扩展存储库中的 Sample.cs

特性

下表描述了属性的 CosmosDBMongoTrigger 绑定配置属性。

参数 DESCRIPTION
FunctionId (可选)触发器函数的 ID。
数据库名称 由触发器监视的数据库的名称,以供更改。 必需,除非 TriggerLevel 设置为 MonitorLevel.Cluser.
CollectionName 由触发器监视的数据库中的集合的名称,以供更改。 当 TriggerLevel 设置为 MonitorLevel.Collection 时需要。
ConnectionStringSetting 应用设置或设置集合的名称,用于指定如何连接到受监视的 Azure Cosmos DB 帐户。
TriggerLevel 指示正在监视更改的级别。 有效值为 MonitorLevelCollectionDatabaseCluster

用法

使用 TriggerLevel 参数设置所监视的更改范围。

可以使用该 CosmosDBMongo 属性在函数代码中直接获取和处理 MongoDB 客户端

        [FunctionName("ClientBindingSample")]
        public static void ClientBindingRun(
             [TimerTrigger("*/5 * * * * *")] TimerInfo myTimer,
             [CosmosDBMongo] IMongoClient client,
             ILogger log)
        {
            var documents = client.GetDatabase("TestDatabase").GetCollection<BsonDocument>("TestCollection").Find(new BsonDocument()).ToList();

            foreach (BsonDocument d in documents)
            {
                log.LogInformation(d.ToString());
            }
        }