适用于 Azure Functions 的 Azure Cosmos DB for MongoDB (vCore) 输入绑定

本文介绍如何在 Azure Functions 中使用 Azure Cosmos DB for MongoDB vCore 输入绑定。

使用 Azure Cosmos DB for MongoDB (vCore) 输入绑定,可以从数据库中检索一个或多个项作为文档。

重要

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

示例:

此示例显示了一个计时器触发器函数,该函数使用输入绑定对数据库执行定期查询:

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using Microsoft.Extensions.Logging;
using MongoDB.Bson;
using MongoDB.Driver;

namespace Sample
{
    public static class Sample
    {
         [FunctionName("InputBindingSample")]
          public static async Task InputBindingRun(
            [TimerTrigger("*/5 * * * * *")] TimerInfo myTimer,
            [CosmosDBMongo("%vCoreDatabaseTrigger%", "%vCoreCollectionTrigger%", ConnectionStringSetting = "vCoreConnectionStringTrigger",
            QueryString = "%queryString%")] List<BsonDocument> docs,
            ILogger log)
          {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

            foreach (var doc in docs)
            {
                log.LogInformation(doc.ToString());
            }
          }
           
    }
}

这些示例引用简单的 TestClass 类型:

namespace Sample
{
    public class TestClass
    {
        public string id { get; set; }
        public string SomeData { get; set; }
    }
}

特性

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

参数 DESCRIPTION
FunctionId (可选)触发器函数的 ID。
数据库名称 由触发器监视的数据库的名称,以供更改。
CollectionName 由触发器监视的数据库中的集合的名称,以供更改。
ConnectionStringSetting 应用设置或设置集合的名称,用于指定如何连接到受监视的 Azure Cosmos DB 帐户。
QueryString 定义输入绑定从数据库返回文档使用的 Mongo 查询表达式。 查询支持绑定参数。

用法

可以使用该 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());
            }
        }