本文介绍如何在 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 | 指示正在监视更改的级别。 有效值为 MonitorLevel : Collection 、 Database 和 Cluster 。 |
使用 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());
}
}