Azure Cosmos DB associações para Azure Functions 2. xAzure Cosmos DB bindings for Azure Functions 2.x

Este artigo explica como trabalhar com associações de Azure Cosmos DB no Azure Functions 2. x.This article explains how to work with Azure Cosmos DB bindings in Azure Functions 2.x. Funções do Azure suporta acionaram, de entrada e saída enlaces para o Azure Cosmos DB.Azure Functions supports trigger, input, and output bindings for Azure Cosmos DB.

Nota

Este artigo é para Azure Functions versão 2. x.This article is for Azure Functions version 2.x. Para obter informações sobre como usar essas associações no functions 1. x, consulte Azure Cosmos DB associações para Azure Functions 1. x.For information about how to use these bindings in Functions 1.x, see Azure Cosmos DB bindings for Azure Functions 1.x.

Este enlace foi originalmente denominado DocumentDB.This binding was originally named DocumentDB. Nas funções versão 2. x, o gatilho, as associações e o pacote são todos nomeados Cosmos DB.In Functions version 2.x, the trigger, bindings, and package are all named Cosmos DB.

Estas são informações de referência para programadores das funções do Azure.This is reference information for Azure Functions developers. Se estiver familiarizado com as funções do Azure, comece com os seguintes recursos:If you're new to Azure Functions, start with the following resources:

APIs com suporteSupported APIs

Os enlaces do Cosmos DB do Azure só são suportados para utilização com a API de SQL.Azure Cosmos DB bindings are only supported for use with the SQL API. Para todas as outras APIs do Azure Cosmos DB, deve acessar o banco de dados da sua função com o cliente de estático para a sua API, incluindo API do Azure Cosmos DB para o MongoDB, Cassandra API, API do gremlin, e API de tabela.For all other Azure Cosmos DB APIs, you should access the database from your function by using the static client for your API, including Azure Cosmos DB's API for MongoDB, Cassandra API, Gremlin API, and Table API.

Pacotes - funções 2.xPackages - Functions 2.x

As associações de Azure Cosmos DB para as funções versão 2. x são fornecidas no pacote NuGet Microsoft. Azure. webjobs. Extensions. CosmosDB , versão 3. x.The Azure Cosmos DB bindings for Functions version 2.x are provided in the Microsoft.Azure.WebJobs.Extensions.CosmosDB NuGet package, version 3.x. É de código-fonte para as ligações na azure-webjobs-sdk-extensões repositório do GitHub.Source code for the bindings is in the azure-webjobs-sdk-extensions GitHub repository.

A tabela seguinte mostra como adicionar suporte para essa ligação em cada ambiente de desenvolvimento.The following table tells how to add support for this binding in each development environment.

Ambiente de programaçãoDevelopment environment Para adicionar suporte noTo add support in
Funções 2.xFunctions 2.x
Desenvolvimento local - biblioteca de classes do c#Local development - C# class library Instalar o pacoteInstall the package
Desenvolvimento local - C# script, JavaScript, F#, Java e PythonLocal development - C# script, JavaScript, F#, Java and Python Registre-se a extensãoRegister the extension
Desenvolvimento de portaisPortal development Instalar ao adicionar o enlace de saídaInstall when adding output binding

Para saber como atualizar o enlace extensões no portal sem ter de voltar a publicar o projeto de aplicação de função existente, veja atualizar suas extensões.To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

AcionadorTrigger

O acionador do Azure Cosmos DB utiliza a Feed de alterações do Azure Cosmos DB para escutar as inserções e atualizações em várias partições.The Azure Cosmos DB Trigger uses the Azure Cosmos DB Change Feed to listen for inserts and updates across partitions. O feed de alterações publica inserções e atualizações, eliminações não.The change feed publishes inserts and updates, not deletions.

Acionador - exemploTrigger - example

Veja o exemplo de idioma específico:See the language-specific example:

Ignorar exemplos de gatilhoSkip trigger examples

Acionador - exemplo do c#Trigger - C# example

A exemplo a seguir mostra um função c# que é invocado quando há insere ou atualiza a coleção e a base de dados especificada.The following example shows a C# function that is invoked when there are inserts or updates in the specified database and collection.

using Microsoft.Azure.Documents;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class CosmosTrigger
    {
        [FunctionName("CosmosTrigger")]
        public static void Run([CosmosDBTrigger(
            databaseName: "ToDoItems",
            collectionName: "Items",
            ConnectionStringSetting = "CosmosDBConnection",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            ILogger log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.LogInformation($"Documents modified: {documents.Count}");
                log.LogInformation($"First document Id: {documents[0].Id}");
            }
        }
    }
}

Ignorar exemplos de gatilhoSkip trigger examples

Acionador - exemplo de script do c#Trigger - C# script example

O exemplo seguinte mostra um acionador Cosmos DB ligando uma Function ficheiro e uma função de script do c# que utiliza o enlace.The following example shows a Cosmos DB trigger binding in a function.json file and a C# script function that uses the binding. A função escreve as mensagens de registo quando os registos de Cosmos DB são modificados.The function writes log messages when Cosmos DB records are modified.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Aqui está o código de script do c#:Here's the C# script code:

    #r "Microsoft.Azure.DocumentDB.Core"

    using System;
    using Microsoft.Azure.Documents;
    using System.Collections.Generic;
    using Microsoft.Extensions.Logging;

    public static void Run(IReadOnlyList<Document> documents, ILogger log)
    {
      log.LogInformation("Documents modified " + documents.Count);
      log.LogInformation("First document Id " + documents[0].Id);
    }

Ignorar exemplos de gatilhoSkip trigger examples

Acionador - exemplo de JavaScriptTrigger - JavaScript example

O exemplo seguinte mostra um acionador Cosmos DB ligando uma Function ficheiro e uma função JavaScript que utiliza o enlace.The following example shows a Cosmos DB trigger binding in a function.json file and a JavaScript function that uses the binding. A função escreve as mensagens de registo quando os registos de Cosmos DB são modificados.The function writes log messages when Cosmos DB records are modified.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Eis o código JavaScript:Here's the JavaScript code:

    module.exports = function (context, documents) {
      context.log('First document Id modified : ', documents[0].id);

      context.done();
    }

Acionador - exemplo de JavaTrigger - Java example

O exemplo a seguir mostra uma associação de gatilho Cosmos DB no arquivo Function. JSON e uma função Java que usa a associação.The following example shows a Cosmos DB trigger binding in function.json file and a Java function that uses the binding. A função é envolvida quando há inserções ou atualizações no banco de dados e na coleção especificados.The function is involved when there are inserts or updates in the specified database and collection.

{
    "type": "cosmosDBTrigger",
    "name": "items",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "AzureCosmosDBConnection",
    "databaseName": "ToDoList",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": false
}

Eis o código Java:Here's the Java code:

    @FunctionName("cosmosDBMonitor")
    public void cosmosDbProcessor(
        @CosmosDBTrigger(name = "items",
            databaseName = "ToDoList",
            collectionName = "Items",
            leaseCollectionName = "leases",
            createLeaseCollectionIfNotExists = true,
            connectionStringSetting = "AzureCosmosDBConnection") String[] items,
            final ExecutionContext context ) {
                context.getLogger().info(items.length + "item(s) is/are changed.");
            }

Na biblioteca de tempo de execução de funções Java, use a @CosmosDBTrigger anotação em parâmetros cujo valor venha de Cosmos DB.In the Java functions runtime library, use the @CosmosDBTrigger annotation on parameters whose value would come from Cosmos DB. Esta anotação pode ser usada com tipos Java nativos, POJOs ou valores anuláveis usando T<> opcional.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

Ignorar exemplos de gatilhoSkip trigger examples

Gatilho-exemplo de PythonTrigger - Python example

O exemplo a seguir mostra uma associação de gatilho Cosmos DB em um arquivo Function. JSON e uma função Python que usa a associação.The following example shows a Cosmos DB trigger binding in a function.json file and a Python function that uses the binding. A função escreve as mensagens de registo quando os registos de Cosmos DB são modificados.The function writes log messages when Cosmos DB records are modified.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDBTrigger",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Este é o código Python:Here's the Python code:

    import logging
    import azure.functions as func


    def main(documents: func.DocumentList) -> str:
        if documents:
            logging.info('First document Id modified: %s', documents[0]['id'])

Gatilho- C# atributosTrigger - C# attributes

Na bibliotecas de classes do c#, utilize o CosmosDBTrigger atributo.In C# class libraries, use the CosmosDBTrigger attribute.

Construtor do atributo pega o nome de base de dados e o nome da coleção.The attribute's constructor takes the database name and collection name. Para obter informações sobre essas configurações e outras propriedades que pode configurar, consulte acionador - configuração.For information about those settings and other properties that you can configure, see Trigger - configuration. Aqui está um CosmosDBTrigger exemplo de atributo numa assinatura do método:Here's a CosmosDBTrigger attribute example in a method signature:

    [FunctionName("DocumentUpdates")]
    public static void Run(
        [CosmosDBTrigger("database", "collection", ConnectionStringSetting = "myCosmosDB")]
    IReadOnlyList<Document> documents,
        ILogger log)
    {
        ...
    }

Para obter um exemplo completo, consulte acionador - exemplo do c#.For a complete example, see Trigger - C# example.

Acionador - configuraçãoTrigger - configuration

A tabela seguinte explica as propriedades de configuração de ligação definida no Function ficheiro e o CosmosDBTrigger atributo.The following table explains the binding configuration properties that you set in the function.json file and the CosmosDBTrigger attribute.

propriedade de Functionfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
typetype Tem de ser definido como cosmosDBTrigger.Must be set to cosmosDBTrigger.
directiondirection Tem de ser definido como in.Must be set to in. Este parâmetro é definido automaticamente quando criar o acionador no portal do Azure.This parameter is set automatically when you create the trigger in the Azure portal.
namename O nome da variável no código de função que representa a lista de documentos com as alterações.The variable name used in function code that represents the list of documents with changes.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting O nome de uma definição de aplicação que contém a cadeia de ligação utilizada para ligar à conta do Azure Cosmos DB a ser monitorizada.The name of an app setting that contains the connection string used to connect to the Azure Cosmos DB account being monitored.
databaseNamedatabaseName DatabaseNameDatabaseName O nome da base de dados do Azure Cosmos DB com a coleção a ser monitorizada.The name of the Azure Cosmos DB database with the collection being monitored.
collectionNamecollectionName CollectionNameCollectionName O nome da coleção a ser monitorizado.The name of the collection being monitored.
leaseConnectionStringSettingleaseConnectionStringSetting LeaseConnectionStringSettingLeaseConnectionStringSetting (Opcional) O nome de uma definição de aplicação que contém a cadeia de ligação para o serviço que mantém a coleção de concessão.(Optional) The name of an app setting that contains the connection string to the service which holds the lease collection. Quando não definido, o connectionStringSetting valor é utilizado.When not set, the connectionStringSetting value is used. Este parâmetro é definido automaticamente quando a associação é criada no portal.This parameter is automatically set when the binding is created in the portal. A cadeia de ligação para a coleção de concessões tem de ter permissões de escrita.The connection string for the leases collection must have write permissions.
leaseDatabaseNameleaseDatabaseName LeaseDatabaseNameLeaseDatabaseName (Opcional) O nome da base de dados que contém a coleção utilizada para armazenar as concessões.(Optional) The name of the database that holds the collection used to store leases. Quando não definido, o valor da databaseName definição é utilizada.When not set, the value of the databaseName setting is used. Este parâmetro é definido automaticamente quando a associação é criada no portal.This parameter is automatically set when the binding is created in the portal.
leaseCollectionNameleaseCollectionName LeaseCollectionNameLeaseCollectionName (Opcional) O nome da coleção utilizada para armazenar as concessões.(Optional) The name of the collection used to store leases. Quando não definido, o valor leases é utilizado.When not set, the value leases is used.
createLeaseCollectionIfNotExistscreateLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExistsCreateLeaseCollectionIfNotExists (Opcional) Quando definido como true, a coleção de concessões é criada automaticamente quando ainda não exista.(Optional) When set to true, the leases collection is automatically created when it doesn't already exist. O valor predefinido é false.The default value is false.
leasesCollectionThroughputleasesCollectionThroughput LeasesCollectionThroughputLeasesCollectionThroughput (Opcional) Define a quantidade de unidades de pedido para atribuir quando é criada a coleção de concessões.(Optional) Defines the amount of Request Units to assign when the leases collection is created. Esta definição é apenas utilizado quando createLeaseCollectionIfNotExists está definido como true.This setting is only used When createLeaseCollectionIfNotExists is set to true. Este parâmetro é definido automaticamente quando a associação é criada com o portal.This parameter is automatically set when the binding is created using the portal.
leaseCollectionPrefixleaseCollectionPrefix leaseCollectionPrefixLeaseCollectionPrefix (Opcional) Quando definido, ele adiciona um prefixo para as concessões criadas na coleção de concessão para essa função, permitindo efetivamente dois as funções do Azure separadas partilhar a mesma coleção de concessão por diferentes prefixos a utilizar.(Optional) When set, it adds a prefix to the leases created in the Lease collection for this Function, effectively allowing two separate Azure Functions to share the same Lease collection by using different prefixes.
feedPollDelayfeedPollDelay feedPollDelayFeedPollDelay (Opcional) Quando o conjunto, define, em milissegundos, o atraso entre uma partição para novas alterações no feed de consulta são drenadas alterações Afinal de contas atuais.(Optional) When set, it defines, in milliseconds, the delay in between polling a partition for new changes on the feed, after all current changes are drained. A predefinição é de 5000 (5 segundos).Default is 5000 (5 seconds).
leaseAcquireIntervalleaseAcquireInterval leaseAcquireIntervalLeaseAcquireInterval (Opcional) Quando definida, ela define, em milissegundos, o intervalo de disparar uma tarefa de computação se as partições são distribuídas uniformemente entre instâncias de host conhecidos.(Optional) When set, it defines, in milliseconds, the interval to kick off a task to compute if partitions are distributed evenly among known host instances. A predefinição é 13000 (13 segundos).Default is 13000 (13 seconds).
leaseExpirationIntervalleaseExpirationInterval leaseExpirationIntervalLeaseExpirationInterval (Opcional) Quando definida, ela define, em milissegundos, o intervalo para o qual a concessão é criada numa concessão que representa uma partição.(Optional) When set, it defines, in milliseconds, the interval for which the lease is taken on a lease representing a partition. Se a concessão não for renovada dentro deste intervalo, fará com que expire e propriedade da partição irá mudar para outra instância.If the lease is not renewed within this interval, it will cause it to expire and ownership of the partition will move to another instance. A predefinição é 60000 (60 segundos).Default is 60000 (60 seconds).
leaseRenewIntervalleaseRenewInterval leaseRenewIntervalLeaseRenewInterval (Opcional) Quando definida, ela define, em milissegundos, o intervalo de renovação para todas as concessões para partições atualmente mantido por uma instância.(Optional) When set, it defines, in milliseconds, the renew interval for all leases for partitions currently held by an instance. A predefinição é 17000 (17 segundos).Default is 17000 (17 seconds).
checkpointFrequencycheckpointFrequency checkpointFrequencyCheckpointFrequency (Opcional) Quando definida, ela define, em milissegundos, o intervalo entre pontos de verificação de concessão.(Optional) When set, it defines, in milliseconds, the interval between lease checkpoints. O padrão é sempre após cada chamada de função.Default is always after each Function call.
maxItemsPerInvocationmaxItemsPerInvocation maxItemsPerInvocationMaxItemsPerInvocation (Opcional) Quando definida, personaliza a quantidade máxima de itens recebidas por chamada de função.(Optional) When set, it customizes the maximum amount of items received per Function call.
startFromBeginningstartFromBeginning StartFromBeginningStartFromBeginning Adicional Quando definido, ele informa ao gatilho para começar a ler as alterações desde o início do histórico da coleção, em vez da hora atual.(Optional) When set, it tells the Trigger to start reading changes from the beginning of the history of the collection instead of the current time. Isso só funciona na primeira vez que o gatilho é iniciado, como nas execuções subsequentes, os pontos de verificação já estão armazenados.This only works the first time the Trigger starts, as in subsequent runs, the checkpoints are already stored. Definir isso como true quando houver concessões já criadas não tem efeito.Setting this to true when there are leases already created has no effect.

Quando estiver a desenvolver localmente, as definições da aplicação Ir para o Settings ficheiro.When you're developing locally, app settings go into the local.settings.json file.

Acionador - utilizaçãoTrigger - usage

O acionador requer uma segunda coleção, que utiliza para armazenar concessões nas partições.The trigger requires a second collection that it uses to store leases over the partitions. A coleção a ser monitorizado e a coleção que contém as concessões tem de estar disponíveis para o acionador trabalhar.Both the collection being monitored and the collection that contains the leases must be available for the trigger to work.

Importante

Se várias funções estiverem configuradas para utilizar um acionador Cosmos DB para a mesma coleção, cada uma das funções deve usar uma coleção de concessão dedicado ou especificar um LeaseCollectionPrefix para cada função.If multiple functions are configured to use a Cosmos DB trigger for the same collection, each of the functions should use a dedicated lease collection or specify a different LeaseCollectionPrefix for each function. Caso contrário, será acionada apenas uma das funções.Otherwise, only one of the functions will be triggered. Para obter informações sobre o prefixo, consulte a seção de configuração.For information about the prefix, see the Configuration section.

O acionador não indica que se um documento foi atualizado ou inserido, ele fornece apenas o próprio documento.The trigger doesn't indicate whether a document was updated or inserted, it just provides the document itself. Se precisar manipular atualizações e inserções de forma diferente, poderia fazê-lo através da implementação timestamp campos para inserção ou atualização.If you need to handle updates and inserts differently, you could do that by implementing timestamp fields for insertion or update.

InputInput

O enlace de entrada do Azure Cosmos DB utiliza a API de SQL para obter um ou mais documentos do Azure Cosmos DB e os passa para o parâmetro de entrada da função.The Azure Cosmos DB input binding uses the SQL API to retrieve one or more Azure Cosmos DB documents and passes them to the input parameter of the function. Os parâmetros de consulta ou ID do documento podem ser determinados com base no acionador que invoca a função.The document ID or query parameters can be determined based on the trigger that invokes the function.

Introdução - exemplosInput - examples

Veja os exemplos de idioma específico de leitura de um único documento, especificando um valor de ID:See the language-specific examples that read a single document by specifying an ID value:

Ignorar exemplos de entradaSkip input examples

Introdução - exemplos de c#Input - C# examples

Esta secção contém os exemplos seguintes:This section contains the following examples:

Consulte os exemplos simples ToDoItem tipo:The examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Ignorar exemplos de entradaSkip input examples

Acionador de fila, procura de ID de JSON (c#)Queue trigger, look up ID from JSON (C#)

A exemplo a seguir mostra um função c# que obtém um único documento.The following example shows a C# function that retrieves a single document. A função é acionada por uma mensagem de fila que contém um objeto JSON.The function is triggered by a queue message that contains a JSON object. O acionador de fila analisa o JSON num objeto chamado ToDoItemLookup, que contém o ID para procurar.The queue trigger parses the JSON into an object named ToDoItemLookup, which contains the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

namespace CosmosDBSamplesV2
{
    public class ToDoItemLookup
    {
        public string ToDoItemId { get; set; }
    }
}
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromJSON
    {
        [FunctionName("DocByIdFromJSON")]
        public static void Run(
            [QueueTrigger("todoqueueforlookup")] ToDoItemLookup toDoItemLookup,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{ToDoItemId}")]ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed Id={toDoItemLookup?.ToDoItemId}");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
        }
    }
}

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID da cadeia de consulta (c#)HTTP trigger, look up ID from query string (C#)

A exemplo a seguir mostra um função c# que obtém um único documento.The following example shows a C# function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Nota

O parâmetro de cadeia de caracteres de consulta HTTP diferencia maiúsculas de minúsculas.The HTTP query string parameter is case-sensitive.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromQueryString
    {
        [FunctionName("DocByIdFromQueryString")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{Query.id}")] ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
            return new OkResult();
        }
    }
}

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID de dados da rota (c#)HTTP trigger, look up ID from route data (C#)

A exemplo a seguir mostra um função c# que obtém um único documento.The following example shows a C# function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza encaminhar os dados para especificar o ID para procurar.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromRouteData
    {
        [FunctionName("DocByIdFromRouteData")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems/{id}")]HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                Id = "{id}")] ToDoItem toDoItem,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            if (toDoItem == null)
            {
                log.LogInformation($"ToDo item not found");
            }
            else
            {
                log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
            }
            return new OkResult();
        }
    }
}

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID de encaminhar os dados, usando SqlQuery (c#)HTTP trigger, look up ID from route data, using SqlQuery (C#)

A exemplo a seguir mostra um função c# que obtém um único documento.The following example shows a C# function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza encaminhar os dados para especificar o ID para procurar.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

O exemplo mostra como usar uma expressão de associação no SqlQuery parâmetro.The example shows how to use a binding expression in the SqlQuery parameter. Você pode passar os dados de rota SqlQuery para o parâmetro, como mostrado, mas atualmente não é possível passar valores de cadeia de caracteres de consulta.You can pass route data to the SqlQuery parameter as shown, but currently you can't pass query string values.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocByIdFromRouteDataUsingSqlQuery
    {
        [FunctionName("DocByIdFromRouteDataUsingSqlQuery")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = "todoitems2/{id}")]HttpRequest req,
            [CosmosDB("ToDoItems", "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "select * from ToDoItems r where r.id = {id}")]
                IEnumerable<ToDoItem> toDoItems,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.LogInformation(toDoItem.Description);
            }
            return new OkResult();
        }
    }
}

Ignorar exemplos de entradaSkip input examples

HTTP acionar, obter vários documentos, usando SqlQuery (c#)HTTP trigger, get multiple docs, using SqlQuery (C#)

A exemplo a seguir mostra um função c# que obtém uma lista de documentos.The following example shows a C# function that retrieves a list of documents. A função é acionada por um pedido HTTP.The function is triggered by an HTTP request. A consulta é especificada no SqlQuery atributo de propriedade.The query is specified in the SqlQuery attribute property.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class DocsBySqlQuery
    {
        [FunctionName("DocsBySqlQuery")]
        public static IActionResult Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
                HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection",
                SqlQuery = "SELECT top 2 * FROM c order by c._ts desc")]
                IEnumerable<ToDoItem> toDoItems,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");
            foreach (ToDoItem toDoItem in toDoItems)
            {
                log.LogInformation(toDoItem.Description);
            }
            return new OkResult();
        }
    }
}

Ignorar exemplos de entradaSkip input examples

HTTP acionar, obter vários documentos, com o DocumentClient (c#)HTTP trigger, get multiple docs, using DocumentClient (C#)

A exemplo a seguir mostra um função c# que obtém uma lista de documentos.The following example shows a C# function that retrieves a list of documents. A função é acionada por um pedido HTTP.The function is triggered by an HTTP request. O código utiliza um DocumentClient instância fornecida pelo enlace do Azure Cosmos DB para ler uma lista de documentos.The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. O DocumentClient instância também poderia ser utilizada para operações de escrita.The DocumentClient instance could also be used for write operations.

Nota

Você também pode usar a interface IDocumentClient para facilitar o teste.You can also use the IDocumentClient interface to make testing easier.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System;
using System.Linq;
using System.Threading.Tasks;

namespace CosmosDBSamplesV2
{
    public static class DocsByUsingDocumentClient
    {
        [FunctionName("DocsByUsingDocumentClient")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post",
                Route = null)]HttpRequest req,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")] DocumentClient client,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            var searchterm = req.Query["searchterm"];
            if (string.IsNullOrWhiteSpace(searchterm))
            {
                return (ActionResult)new NotFoundResult();
            }

            Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");

            log.LogInformation($"Searching for: {searchterm}");

            IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
                .Where(p => p.Description.Contains(searchterm))
                .AsDocumentQuery();

            while (query.HasMoreResults)
            {
                foreach (ToDoItem result in await query.ExecuteNextAsync())
                {
                    log.LogInformation(result.Description);
                }
            }
            return new OkResult();
        }
    }
}

Ignorar exemplos de entradaSkip input examples

Introdução - exemplos de script do c#Input - C# script examples

Esta secção contém os exemplos seguintes:This section contains the following examples:

Consulte os exemplos de Acionador HTTP simples ToDoItem tipo:The HTTP trigger examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Ignorar exemplos de entradaSkip input examples

Acionador de fila, procura de ID de cadeia de caracteres (c# script)Queue trigger, look up ID from string (C# script)

O exemplo seguinte mostra um enlace de entrada do Cosmos DB num Function ficheiro e uma função de script do c# que utiliza o enlace.The following example shows a Cosmos DB input binding in a function.json file and a C# script function that uses the binding. A função lê um único documento e atualiza o valor de texto do documento.The function reads a single document and updates the document's text value.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "inputDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger}",
    "partitionKey": "{partition key value}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Aqui está o código de script do c#:Here's the C# script code:

    using System;

    // Change input document contents using Azure Cosmos DB input binding
    public static void Run(string myQueueItem, dynamic inputDocument)
    {
      inputDocument.text = "This has changed.";
    }

Ignorar exemplos de entradaSkip input examples

Acionador da fila, obter vários documentos, usando SqlQuery (c# script)Queue trigger, get multiple docs, using SqlQuery (C# script)

O exemplo seguinte mostra um enlace de entrada do Azure Cosmos DB num Function ficheiro e uma função de script do c# que utiliza o enlace.The following example shows an Azure Cosmos DB input binding in a function.json file and a C# script function that uses the binding. A função obtém vários documentos especificados por uma consulta SQL, com um acionador de fila para personalizar os parâmetros de consulta.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

O acionador de fila fornece um parâmetro departmentId.The queue trigger provides a parameter departmentId. Uma mensagem de fila de { "departmentId" : "Finance" } retornaria todos os registos para o departamento financeiro.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Aqui está o código de script do c#:Here's the C# script code:

    public static void Run(QueuePayload myQueueItem, IEnumerable<dynamic> documents)
    {
        foreach (var doc in documents)
        {
            // operate on each document
        }
    }

    public class QueuePayload
    {
        public string departmentId { get; set; }
    }

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID da cadeia de consulta (c# script)HTTP trigger, look up ID from query string (C# script)

A exemplo a seguir mostra um função de script do c# que obtém um único documento.The following example shows a C# script function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}"
    }
  ],
  "disabled": false
}

Aqui está o código de script do c#:Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, ToDoItem toDoItem, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    if (toDoItem == null)
    {
         log.LogInformation($"ToDo item not found");
    }
    else
    {
        log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID de dados da rota (c# script)HTTP trigger, look up ID from route data (C# script)

A exemplo a seguir mostra um função de script do c# que obtém um único documento.The following example shows a C# script function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza encaminhar os dados para especificar o ID para procurar.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}"
    }
  ],
  "disabled": false
}

Aqui está o código de script do c#:Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, ToDoItem toDoItem, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    if (toDoItem == null)
    {
         log.LogInformation($"ToDo item not found");
    }
    else
    {
        log.LogInformation($"Found ToDo item, Description={toDoItem.Description}");
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

Ignorar exemplos de entradaSkip input examples

HTTP acionar, obter vários documentos, usando SqlQuery (c# script)HTTP trigger, get multiple docs, using SqlQuery (C# script)

A exemplo a seguir mostra um função de script do c# que obtém uma lista de documentos.The following example shows a C# script function that retrieves a list of documents. A função é acionada por um pedido HTTP.The function is triggered by an HTTP request. A consulta é especificada no SqlQuery atributo de propriedade.The query is specified in the SqlQuery attribute property.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "sqlQuery": "SELECT top 2 * FROM c order by c._ts desc"
    }
  ],
  "disabled": false
}

Aqui está o código de script do c#:Here's the C# script code:

using System.Net;
using Microsoft.Extensions.Logging;

public static HttpResponseMessage Run(HttpRequestMessage req, IEnumerable<ToDoItem> toDoItems, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    foreach (ToDoItem toDoItem in toDoItems)
    {
        log.LogInformation(toDoItem.Description);
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

Ignorar exemplos de entradaSkip input examples

HTTP acionar, obter vários documentos, com o DocumentClient (c# script)HTTP trigger, get multiple docs, using DocumentClient (C# script)

A exemplo a seguir mostra um função de script do c# que obtém uma lista de documentos.The following example shows a C# script function that retrieves a list of documents. A função é acionada por um pedido HTTP.The function is triggered by an HTTP request. O código utiliza um DocumentClient instância fornecida pelo enlace do Azure Cosmos DB para ler uma lista de documentos.The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. O DocumentClient instância também poderia ser utilizada para operações de escrita.The DocumentClient instance could also be used for write operations.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "client",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "inout"
    }
  ],
  "disabled": false
}

Aqui está o código de script do c#:Here's the C# script code:

#r "Microsoft.Azure.Documents.Client"

using System.Net;
using Microsoft.Azure.Documents.Client;
using Microsoft.Azure.Documents.Linq;
using Microsoft.Extensions.Logging;

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, DocumentClient client, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    Uri collectionUri = UriFactory.CreateDocumentCollectionUri("ToDoItems", "Items");
    string searchterm = req.GetQueryNameValuePairs()
        .FirstOrDefault(q => string.Compare(q.Key, "searchterm", true) == 0)
        .Value;

    if (searchterm == null)
    {
        return req.CreateResponse(HttpStatusCode.NotFound);
    }

    log.LogInformation($"Searching for word: {searchterm} using Uri: {collectionUri.ToString()}");
    IDocumentQuery<ToDoItem> query = client.CreateDocumentQuery<ToDoItem>(collectionUri)
        .Where(p => p.Description.Contains(searchterm))
        .AsDocumentQuery();

    while (query.HasMoreResults)
    {
        foreach (ToDoItem result in await query.ExecuteNextAsync())
        {
            log.LogInformation(result.Description);
        }
    }
    return req.CreateResponse(HttpStatusCode.OK);
}

Ignorar exemplos de entradaSkip input examples

Introdução - exemplos de JavaScriptInput - JavaScript examples

Esta seção contém os exemplos a seguir que lêem um único documento especificando um valor de ID de várias fontes:This section contains the following examples that read a single document by specifying an ID value from various sources:

Ignorar exemplos de entradaSkip input examples

Acionador de fila, procura de ID de JSON (JavaScript)Queue trigger, look up ID from JSON (JavaScript)

O exemplo seguinte mostra um enlace de entrada do Cosmos DB num Function ficheiro e uma função JavaScript que utiliza o enlace.The following example shows a Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. A função lê um único documento e atualiza o valor de texto do documento.The function reads a single document and updates the document's text value.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "inputDocumentIn",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger_payload_property}",
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
},
{
    "name": "inputDocumentOut",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": false,
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Eis o código JavaScript:Here's the JavaScript code:

    // Change input document contents using Azure Cosmos DB input binding, using context.bindings.inputDocumentOut
    module.exports = function (context) {
    context.bindings.inputDocumentOut = context.bindings.inputDocumentIn;
    context.bindings.inputDocumentOut.text = "This was updated!";
    context.done();
    };

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID da cadeia de consulta (JavaScript)HTTP trigger, look up ID from query string (JavaScript)

A exemplo a seguir mostra um função de JavaScript que obtém um único documento.The following example shows a JavaScript function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}"
    }
  ],
  "disabled": false
}

Eis o código JavaScript:Here's the JavaScript code:

module.exports = function (context, req, toDoItem) {
    context.log('JavaScript queue trigger function processed work item');
    if (!toDoItem)
    {
        context.log("ToDo item not found");
    }
    else
    {
        context.log("Found ToDo item, Description=" + toDoItem.Description);
    }

    context.done();
};

Ignorar exemplos de entradaSkip input examples

Acionador HTTP, procura de ID de dados da rota (JavaScript)HTTP trigger, look up ID from route data (JavaScript)

A exemplo a seguir mostra um função de JavaScript que obtém um único documento.The following example shows a JavaScript function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItem",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connection": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}"
    }
  ],
  "disabled": false
}

Eis o código JavaScript:Here's the JavaScript code:

module.exports = function (context, req, toDoItem) {
    context.log('JavaScript queue trigger function processed work item');
    if (!toDoItem)
    {
        context.log("ToDo item not found");
    }
    else
    {
        context.log("Found ToDo item, Description=" + toDoItem.Description);
    }

    context.done();
};

Ignorar exemplos de entradaSkip input examples

Acionador da fila, obter vários documentos, usando SqlQuery (JavaScript)Queue trigger, get multiple docs, using SqlQuery (JavaScript)

O exemplo seguinte mostra um enlace de entrada do Azure Cosmos DB num Function ficheiro e uma função JavaScript que utiliza o enlace.The following example shows an Azure Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. A função obtém vários documentos especificados por uma consulta SQL, com um acionador de fila para personalizar os parâmetros de consulta.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

O acionador de fila fornece um parâmetro departmentId.The queue trigger provides a parameter departmentId. Uma mensagem de fila de { "departmentId" : "Finance" } retornaria todos os registos para o departamento financeiro.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Eis o código JavaScript:Here's the JavaScript code:

    module.exports = function (context, input) {
        var documents = context.bindings.documents;
        for (var i = 0; i < documents.length; i++) {
            var document = documents[i];
            // operate on each document
        }
        context.done();
    };

Ignorar exemplos de entradaSkip input examples

Exemplos de entrada-PythonInput - Python examples

Esta seção contém os exemplos a seguir que lêem um único documento especificando um valor de ID de várias fontes:This section contains the following examples that read a single document by specifying an ID value from various sources:

Ignorar exemplos de entradaSkip input examples

Gatilho de fila, Pesquisar ID de JSON (Python)Queue trigger, look up ID from JSON (Python)

O exemplo a seguir mostra uma associação de entrada Cosmos DB em um arquivo Function. JSON e uma função Python que usa a associação.The following example shows a Cosmos DB input binding in a function.json file and a Python function that uses the binding. A função lê um único documento e atualiza o valor de texto do documento.The function reads a single document and updates the document's text value.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger_payload_property}",
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
},
{
    "name": "$return",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": false,
    "partitionKey": "{queueTrigger_payload_property}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Este é o código Python:Here's the Python code:

import azure.functions as func


def main(queuemsg: func.QueueMessage, documents: func.DocumentList) -> func.Document:
    if documents:
        document = documents[0]
        document['text'] = 'This was updated!'
        return document

Ignorar exemplos de entradaSkip input examples

Gatilho HTTP, Pesquisar ID da cadeia de caracteres de consulta (Python)HTTP trigger, look up ID from query string (Python)

O exemplo a seguir mostra uma função Python que recupera um único documento.The following example shows a Python function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "todoitems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "in",
      "Id": "{Query.id}"
    }
  ],
  "disabled": true,
  "scriptFile": "__init__.py"
}

Este é o código Python:Here's the Python code:

import logging
import azure.functions as func


def main(req: func.HttpRequest, todoitems: func.DocumentList) -> str:
    if not todoitems:
        logging.warning("ToDo item not found")
    else:
        logging.info("Found ToDo item, Description=%s",
                     todoitems[0]['description'])

    return 'OK'

Ignorar exemplos de entradaSkip input examples

Gatilho HTTP, Pesquisar ID de dados de rota (Python)HTTP trigger, look up ID from route data (Python)

O exemplo a seguir mostra uma função Python que recupera um único documento.The following example shows a Python function that retrieves a single document. A função é acionada por um pedido HTTP que utiliza uma cadeia de consulta para especificar o ID para procurar.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Que ID é utilizado para obter um ToDoItem documento da coleção e base de dados especificada.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Aqui está o Function ficheiro:Here's the function.json file:

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ],
      "route":"todoitems/{id}"
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "cosmosDB",
      "name": "todoitems",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connection": "CosmosDBConnection",
      "direction": "in",
      "Id": "{id}"
    }
  ],
  "disabled": false,
  "scriptFile": "__init__.py"
}

Este é o código Python:Here's the Python code:

import logging
import azure.functions as func


def main(req: func.HttpRequest, todoitems: func.DocumentList) -> str:
    if not todoitems:
        logging.warning("ToDo item not found")
    else:
        logging.info("Found ToDo item, Description=%s",
                     todoitems[0]['description'])
    return 'OK'

Ignorar exemplos de entradaSkip input examples

Gatilho de fila, obter vários documentos, usando SQLQuery (Python)Queue trigger, get multiple docs, using SqlQuery (Python)

O exemplo a seguir mostra uma associação de entrada Azure Cosmos DB em um arquivo Function. JSON e uma função Python que usa a associação.The following example shows an Azure Cosmos DB input binding in a function.json file and a Python function that uses the binding. A função obtém vários documentos especificados por uma consulta SQL, com um acionador de fila para personalizar os parâmetros de consulta.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

O acionador de fila fornece um parâmetro departmentId.The queue trigger provides a parameter departmentId. Uma mensagem de fila de { "departmentId" : "Finance" } retornaria todos os registos para o departamento financeiro.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "documents",
    "type": "cosmosDB",
    "direction": "in",
    "databaseName": "MyDb",
    "collectionName": "MyCollection",
    "sqlQuery": "SELECT * from c where c.departmentId = {departmentId}",
    "connectionStringSetting": "CosmosDBConnection"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Este é o código Python:Here's the Python code:

import azure.functions as func

def main(queuemsg: func.QueueMessage, documents: func.DocumentList):
    for document in documents:
        # operate on each document

Ignorar exemplos de entradaSkip input examples

Entrada - F# exemplosInput - F# examples

O exemplo seguinte mostra um enlace de entrada do Cosmos DB num Function ficheiro e uma F# função que utiliza o enlace.The following example shows a Cosmos DB input binding in a function.json file and a F# function that uses the binding. A função lê um único documento e atualiza o valor de texto do documento.The function reads a single document and updates the document's text value.

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "inputDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{queueTrigger}",
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "in"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Aqui está o F# código:Here's the F# code:

    (* Change input document contents using Azure Cosmos DB input binding *)
    open FSharp.Interop.Dynamic
    let Run(myQueueItem: string, inputDocument: obj) =
    inputDocument?text <- "This has changed."

Este exemplo requer um project.json ficheiro que especifica o FSharp.Interop.Dynamic e Dynamitey dependências NuGet:This example requires a project.json file that specifies the FSharp.Interop.Dynamic and Dynamitey NuGet dependencies:

{
    "frameworks": {
        "net46": {
            "dependencies": {
                "Dynamitey": "1.0.2",
                "FSharp.Interop.Dynamic": "3.0.0"
            }
        }
    }
}

Para adicionar um project.json de ficheiros, consulte F# gestão de pacotes.To add a project.json file, see F# package management.

Entrada-exemplos de JavaInput - Java examples

Esta secção contém os exemplos seguintes:This section contains the following examples:

Consulte os exemplos simples ToDoItem tipo:The examples refer to a simple ToDoItem type:

public class ToDoItem {

  private String id;
  private String description;

  public String getId() {
    return id;
  }

  public String getDescription() {
    return description;
  }

  @Override
  public String toString() {
    return "ToDoItem={id=" + id + ",description=" + description + "}";
  }
}

Gatilho HTTP, Pesquisar ID da cadeia de caracteres de consulta-parâmetro de cadeia de caracteres (Java)HTTP trigger, look up ID from query string - String parameter (Java)

O exemplo a seguir mostra uma função Java que recupera um único documento.The following example shows a Java function that retrieves a single document. A função é disparada por uma solicitação HTTP que usa uma cadeia de caracteres de consulta para especificar a ID a ser pesquisada.The function is triggered by a HTTP request that uses a query string to specify the ID to look up. Essa ID é usada para recuperar um documento do banco de dados e da coleção especificados, na forma de cadeia de caracteres.That ID is used to retrieve a document from the specified database and collection, in String form.

public class DocByIdFromQueryString {

    @FunctionName("DocByIdFromQueryString")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{Query.id}",
              partitionKey = "{Query.id}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            Optional<String> item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));

        // Convert and display
        if (!item.isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            // return JSON from Cosmos. Alternatively, we can parse the JSON string
            // and return an enriched JSON object.
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item.get())
                          .build();
        }
    }
}

Na biblioteca de tempo de execução de funções Java, use a @CosmosDBInput anotação em parâmetros de função cujo valor venha de Cosmos DB.In the Java functions runtime library, use the @CosmosDBInput annotation on function parameters whose value would come from Cosmos DB. Esta anotação pode ser usada com tipos Java nativos, POJOs ou valores anuláveis usando T<> opcional.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

Gatilho HTTP, Pesquisar ID da cadeia de caracteres de consulta-parâmetro POJO (Java)HTTP trigger, look up ID from query string - POJO parameter (Java)

O exemplo a seguir mostra uma função Java que recupera um único documento.The following example shows a Java function that retrieves a single document. A função é disparada por uma solicitação HTTP que usa uma cadeia de caracteres de consulta para especificar a ID a ser pesquisada.The function is triggered by a HTTP request that uses a query string to specify the ID to look up. Essa ID é usada para recuperar um documento do banco de dados e da coleção especificados.That ID is used to retrieve a document from the specified database and collection. O documento é então convertido em uma instância do ToDoItem POJO criado anteriormente e passado como um argumento para a função.The document is then converted to an instance of the ToDoItem POJO previously created, and passed as an argument to the function.

public class DocByIdFromQueryStringPojo {

    @FunctionName("DocByIdFromQueryStringPojo")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{Query.id}",
              partitionKey = "{Query.id}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Item from the database is " + item);

        // Convert and display
        if (item == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item)
                          .build();
        }
    }
}

Gatilho HTTP, Pesquisar ID de dados de rota (Java)HTTP trigger, look up ID from route data (Java)

O exemplo a seguir mostra uma função Java que recupera um único documento.The following example shows a Java function that retrieves a single document. A função é disparada por uma solicitação HTTP que usa um parâmetro de rota para especificar a ID a ser pesquisada.The function is triggered by a HTTP request that uses a route parameter to specify the ID to look up. Essa ID é usada para recuperar um documento do banco de dados e da coleção especificados, retornando Optional<String>-o como um.That ID is used to retrieve a document from the specified database and collection, returning it as an Optional<String>.

public class DocByIdFromRoute {

    @FunctionName("DocByIdFromRoute")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems/{id}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              id = "{id}",
              partitionKey = "{id}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            Optional<String> item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("String from the database is " + (item.isPresent() ? item.get() : null));

        // Convert and display
        if (!item.isPresent()) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            // return JSON from Cosmos. Alternatively, we can parse the JSON string
            // and return an enriched JSON object.
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item.get())
                          .build();
        }
    }
}

Gatilho HTTP, Pesquisar ID de dados de rota, usando SQLQuery (Java)HTTP trigger, look up ID from route data, using SqlQuery (Java)

O exemplo a seguir mostra uma função Java que recupera um único documento.The following example shows a Java function that retrieves a single document. A função é disparada por uma solicitação HTTP que usa um parâmetro de rota para especificar a ID a ser pesquisada.The function is triggered by a HTTP request that uses a route parameter to specify the ID to look up. Essa ID é usada para recuperar um documento do banco de dados e da coleção especificados, convertendo o conjunto ToDoItem[]de resultados em a, pois muitos documentos podem ser retornados, dependendo dos critérios de consulta.That ID is used to retrieve a document from the specified database and collection, converting the result set to a ToDoItem[], since many documents may be returned, depending on the query criteria.

public class DocByIdFromRouteSqlQuery {

    @FunctionName("DocByIdFromRouteSqlQuery")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems2/{id}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              sqlQuery = "select * from Items r where r.id = {id}",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem[] item,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Items from the database are " + item);

        // Convert and display
        if (item == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("Document not found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(item)
                          .build();
        }
    }
}

Gatilho HTTP, obter vários documentos de dados de rota, usando SQLQuery (Java)HTTP trigger, get multiple docs from route data, using SqlQuery (Java)

O exemplo a seguir mostra uma função Java que contém vários documentos.The following example shows a Java function that multiple documents. A função é disparada por uma solicitação HTTP que usa um desc parâmetro de rota para especificar a cadeia de caracteres description a ser pesquisada no campo.The function is triggered by a HTTP request that uses a route parameter desc to specify the string to search for in the description field. O termo de pesquisa é usado para recuperar uma coleção de documentos do banco de dados e da coleção especificados, convertendo o ToDoItem[] conjunto de resultados para a e passando-o como um argumento para a função.The search term is used to retrieve a collection of documents from the specified database and collection, converting the result set to a ToDoItem[] and passing it as an argument to the function.

public class DocsFromRouteSqlQuery {

    @FunctionName("DocsFromRouteSqlQuery")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET},
              authLevel = AuthorizationLevel.ANONYMOUS,
              route = "todoitems3/{desc}")
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBInput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              sqlQuery = "select * from Items r where contains(r.description, {desc})",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            ToDoItem[] items,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());
        context.getLogger().info("Number of items from the database is " + (items == null ? 0 : items.length));

        // Convert and display
        if (items == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
                          .body("No documents found.")
                          .build();
        }
        else {
            return request.createResponseBuilder(HttpStatus.OK)
                          .header("Content-Type", "application/json")
                          .body(items)
                          .build();
        }
    }
}

Introdução - atributosInput - attributes

Em C# bibliotecas de classes, use o atributo CosmosDB .In C# class libraries, use the CosmosDB attribute.

Construtor do atributo pega o nome de base de dados e o nome da coleção.The attribute's constructor takes the database name and collection name. Para obter informações sobre essas configurações e outras propriedades que pode configurar, consulte a seguinte secção de configuração.For information about those settings and other properties that you can configure, see the following configuration section.

Entrada - configuraçãoInput - configuration

A tabela seguinte explica as propriedades de configuração de ligação definida no Function ficheiro e o CosmosDB atributo.The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

propriedade de Functionfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
typetype Tem de ser definido como cosmosDB.Must be set to cosmosDB.
directiondirection Tem de ser definido como in.Must be set to in.
namename Nome do parâmetro de enlace que representa o documento na função.Name of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName A base de dados que contém o documento.The database containing the document.
collectionNamecollectionName CollectionNameCollectionName O nome da coleção que contém o documento.The name of the collection that contains the document.
idid IdId O ID do documento a obter.The ID of the document to retrieve. Esta propriedade suporta expressões de enlace.This property supports binding expressions. Não definir ambos os id e sqlQuery propriedades.Don't set both the id and sqlQuery properties. Se não definir individualmente, toda a coleção é recuperada.If you don't set either one, the entire collection is retrieved.
sqlQuerysqlQuery SqlQuerySqlQuery Uma consulta de SQL do Azure Cosmos DB usada para recuperar vários documentos.An Azure Cosmos DB SQL query used for retrieving multiple documents. A propriedade suporta ligações de tempo de execução, tal como neste exemplo: SELECT * FROM c where c.departmentId = {departmentId}.The property supports runtime bindings, as in this example: SELECT * FROM c where c.departmentId = {departmentId}. Não definir ambos os id e sqlQuery propriedades.Don't set both the id and sqlQuery properties. Se não definir individualmente, toda a coleção é recuperada.If you don't set either one, the entire collection is retrieved.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting O nome da definição de aplicação que contém a cadeia de ligação do Azure Cosmos DB.The name of the app setting containing your Azure Cosmos DB connection string.
partitionKeypartitionKey PartitionKeyPartitionKey Especifica o valor de chave de partição para a pesquisa.Specifies the partition key value for the lookup. Pode incluir parâmetros de ligação.May include binding parameters.

Quando estiver a desenvolver localmente, as definições da aplicação Ir para o Settings ficheiro.When you're developing locally, app settings go into the local.settings.json file.

Introdução - utilizaçãoInput - usage

No C# e F# funções, quando a função é encerrado com êxito, todas as alterações efetuadas ao documento de entrada por meio de entrada nomeada parâmetros são mantidos automaticamente.In C# and F# functions, when the function exits successfully, any changes made to the input document via named input parameters are automatically persisted.

Nas funções de JavaScript, as atualizações não são feitas automaticamente ao sair de função.In JavaScript functions, updates are not made automatically upon function exit. Em alternativa, utilize context.bindings.<documentName>In e context.bindings.<documentName>Out para disponibilizar as atualizações.Instead, use context.bindings.<documentName>In and context.bindings.<documentName>Out to make updates. Consulte o exemplo de JavaScript.See the JavaScript example.

OutputOutput

A saída do Azure Cosmos DB ligação permite que escrever um novo documento para uma base de dados do Azure Cosmos DB com a API SQL.The Azure Cosmos DB output binding lets you write a new document to an Azure Cosmos DB database using the SQL API.

Saída - exemplosOutput - examples

Veja os exemplos de idioma específico:See the language-specific examples:

Consulte também os entrado de exemplo que utiliza DocumentClient.See also the input example that uses DocumentClient.

Ignorar os exemplos de saídaSkip output examples

Saída - C# exemplosOutput - C# examples

Esta secção contém os exemplos seguintes:This section contains the following examples:

  • Acionador de fila, um de gravação de documentosQueue trigger, write one doc
  • Acionador de fila, docs escrita usando IAsyncCollectorQueue trigger, write docs using IAsyncCollector

Consulte os exemplos simples ToDoItem tipo:The examples refer to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Ignorar os exemplos de saídaSkip output examples

Acionador de fila, o documento de uma gravação (c#)Queue trigger, write one doc (C#)

A exemplo a seguir mostra um função c# que adiciona um documento a uma base de dados, com dados fornecidos na mensagem do armazenamento de filas.The following example shows a C# function that adds a document to a database, using data provided in message from Queue storage.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;
using System;

namespace CosmosDBSamplesV2
{
    public static class WriteOneDoc
    {
        [FunctionName("WriteOneDoc")]
        public static void Run(
            [QueueTrigger("todoqueueforwrite")] string queueMessage,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]out dynamic document,
            ILogger log)
        {
            document = new { Description = queueMessage, id = Guid.NewGuid() };

            log.LogInformation($"C# Queue trigger function inserted one row");
            log.LogInformation($"Description={queueMessage}");
        }
    }
}

Ignorar os exemplos de saídaSkip output examples

Acionador de fila, docs escrita usando IAsyncCollector (c#)Queue trigger, write docs using IAsyncCollector (C#)

A exemplo a seguir mostra um função c# que adiciona uma coleção de documentos para uma base de dados, com dados fornecidos numa mensagem de fila JSON.The following example shows a C# function that adds a collection of documents to a database, using data provided in a queue message JSON.

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;

namespace CosmosDBSamplesV2
{
    public static class WriteDocsIAsyncCollector
    {
        [FunctionName("WriteDocsIAsyncCollector")]
        public static async Task Run(
            [QueueTrigger("todoqueueforwritemulti")] ToDoItem[] toDoItemsIn,
            [CosmosDB(
                databaseName: "ToDoItems",
                collectionName: "Items",
                ConnectionStringSetting = "CosmosDBConnection")]
                IAsyncCollector<ToDoItem> toDoItemsOut,
            ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

            foreach (ToDoItem toDoItem in toDoItemsIn)
            {
                log.LogInformation($"Description={toDoItem.Description}");
                await toDoItemsOut.AddAsync(toDoItem);
            }
        }
    }
}

Ignorar os exemplos de saídaSkip output examples

Saída - exemplos de script do c#Output - C# script examples

Esta secção contém os exemplos seguintes:This section contains the following examples:

  • Acionador de fila, um de gravação de documentosQueue trigger, write one doc
  • Acionador de fila, docs escrita usando IAsyncCollectorQueue trigger, write docs using IAsyncCollector

Ignorar os exemplos de saídaSkip output examples

Acionador de fila, o documento de uma gravação (c# script)Queue trigger, write one doc (C# script)

O exemplo seguinte mostra uma saída de Azure Cosmos DB ligando uma Function ficheiro e uma função de script do c# que utiliza o enlace.The following example shows an Azure Cosmos DB output binding in a function.json file and a C# script function that uses the binding. A função usa um enlace de entrada de fila de uma fila que recebe JSON no seguinte formato:The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

A função cria documentos do Azure Cosmos DB no seguinte formato para cada registo:The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Aqui está o código de script do c#:Here's the C# script code:

    #r "Newtonsoft.Json"

    using Microsoft.Azure.WebJobs.Host;
    using Newtonsoft.Json.Linq;
    using Microsoft.Extensions.Logging;

    public static void Run(string myQueueItem, out object employeeDocument, ILogger log)
    {
      log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");

      dynamic employee = JObject.Parse(myQueueItem);

      employeeDocument = new {
        id = employee.name + "-" + employee.employeeId,
        name = employee.name,
        employeeId = employee.employeeId,
        address = employee.address
      };
    }

Acionador de fila, docs escrita usando IAsyncCollectorQueue trigger, write docs using IAsyncCollector

Para criar vários documentos, é possível vincular à ICollector<T> ou IAsyncCollector<T> onde T é um dos tipos suportados.To create multiple documents, you can bind to ICollector<T> or IAsyncCollector<T> where T is one of the supported types.

Este exemplo se refere a uma simples ToDoItem tipo:This example refers to a simple ToDoItem type:

namespace CosmosDBSamplesV2
{
    public class ToDoItem
    {
        public string Id { get; set; }
        public string Description { get; set; }
    }
}

Este é o ficheiro de Function:Here's the function.json file:

{
  "bindings": [
    {
      "name": "toDoItemsIn",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "todoqueueforwritemulti",
      "connectionStringSetting": "AzureWebJobsStorage"
    },
    {
      "type": "cosmosDB",
      "name": "toDoItemsOut",
      "databaseName": "ToDoItems",
      "collectionName": "Items",
      "connectionStringSetting": "CosmosDBConnection",
      "direction": "out"
    }
  ],
  "disabled": false
}

Aqui está o código de script do c#:Here's the C# script code:

using System;
using Microsoft.Extensions.Logging;

public static async Task Run(ToDoItem[] toDoItemsIn, IAsyncCollector<ToDoItem> toDoItemsOut, ILogger log)
{
    log.LogInformation($"C# Queue trigger function processed {toDoItemsIn?.Length} items");

    foreach (ToDoItem toDoItem in toDoItemsIn)
    {
        log.LogInformation($"Description={toDoItem.Description}");
        await toDoItemsOut.AddAsync(toDoItem);
    }
}

Ignorar os exemplos de saídaSkip output examples

Saída - exemplos de JavaScriptOutput - JavaScript examples

O exemplo seguinte mostra uma saída de Azure Cosmos DB ligando um Function ficheiro e uma função JavaScript que utiliza o enlace.The following example shows an Azure Cosmos DB output binding in a function.json file and a JavaScript function that uses the binding. A função usa um enlace de entrada de fila de uma fila que recebe JSON no seguinte formato:The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

A função cria documentos do Azure Cosmos DB no seguinte formato para cada registo:The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Eis o código JavaScript:Here's the JavaScript code:

    module.exports = function (context) {

      context.bindings.employeeDocument = JSON.stringify({
        id: context.bindings.myQueueItem.name + "-" + context.bindings.myQueueItem.employeeId,
        name: context.bindings.myQueueItem.name,
        employeeId: context.bindings.myQueueItem.employeeId,
        address: context.bindings.myQueueItem.address
      });

      context.done();
    };

Ignorar os exemplos de saídaSkip output examples

Saída - F# exemplosOutput - F# examples

O exemplo seguinte mostra uma saída de Azure Cosmos DB ligando uma Function ficheiro e uma F# função que utiliza o enlace.The following example shows an Azure Cosmos DB output binding in a function.json file and an F# function that uses the binding. A função usa um enlace de entrada de fila de uma fila que recebe JSON no seguinte formato:The function uses a queue input binding for a queue that receives JSON in the following format:

{
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

A função cria documentos do Azure Cosmos DB no seguinte formato para cada registo:The function creates Azure Cosmos DB documents in the following format for each record:

{
    "id": "John Henry-123456",
    "name": "John Henry",
    "employeeId": "123456",
    "address": "A town nearby"
}

Eis a vinculação de dados a Function ficheiro:Here's the binding data in the function.json file:

{
    "name": "employeeDocument",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "MyAccount_COSMOSDB",
    "direction": "out"
}

O configuração seção explica essas propriedades.The configuration section explains these properties.

Aqui está o F# código:Here's the F# code:

    open FSharp.Interop.Dynamic
    open Newtonsoft.Json
    open Microsoft.Extensions.Logging

    type Employee = {
      id: string
      name: string
      employeeId: string
      address: string
    }

    let Run(myQueueItem: string, employeeDocument: byref<obj>, log: ILogger) =
      log.LogInformation(sprintf "F# Queue trigger function processed: %s" myQueueItem)
      let employee = JObject.Parse(myQueueItem)
      employeeDocument <-
        { id = sprintf "%s-%s" employee?name employee?employeeId
          name = employee?name
          employeeId = employee?employeeId
          address = employee?address }

Este exemplo requer um project.json ficheiro que especifica o FSharp.Interop.Dynamic e Dynamitey dependências NuGet:This example requires a project.json file that specifies the FSharp.Interop.Dynamic and Dynamitey NuGet dependencies:

{
    "frameworks": {
        "net46": {
          "dependencies": {
            "Dynamitey": "1.0.2",
            "FSharp.Interop.Dynamic": "3.0.0"
           }
        }
    }
}

Para adicionar um project.json de ficheiros, consulte F# gestão de pacotes.To add a project.json file, see F# package management.

Saída-exemplos de JavaOutput - Java examples

Gatilho de fila, salvar mensagem no banco de dados por meio de valor de retorno (Java)Queue trigger, save message to database via return value (Java)

O exemplo a seguir mostra uma função Java que adiciona um documento a um banco de dados com um dado de uma mensagem no armazenamento de filas.The following example shows a Java function that adds a document to a database with data from a message in Queue storage.

@FunctionName("getItem")
@CosmosDBOutput(name = "database",
  databaseName = "ToDoList",
  collectionName = "Items",
  connectionStringSetting = "AzureCosmosDBConnection")
public String cosmosDbQueryById(
    @QueueTrigger(name = "msg",
      queueName = "myqueue-items",
      connection = "AzureWebJobsStorage")
    String message,
    final ExecutionContext context)  {
     return "{ id: \"" + System.currentTimeMillis() + "\", Description: " + message + " }";
   }

Gatilho HTTP, salve um documento no banco de dados por meio do valor de retorno (Java)HTTP trigger, save one document to database via return value (Java)

O exemplo a seguir mostra uma função Java cuja assinatura é anotada @CosmosDBOutput e tem valor de retorno do Stringtipo.The following example shows a Java function whose signature is annotated with @CosmosDBOutput and has return value of type String. O documento JSON retornado pela função será gravado automaticamente na coleção CosmosDB correspondente.The JSON document returned by the function will be automatically written to the corresponding CosmosDB collection.

    @FunctionName("WriteOneDoc")
    @CosmosDBOutput(name = "database",
      databaseName = "ToDoList",
      collectionName = "Items",
      connectionStringSetting = "Cosmos_DB_Connection_String")
    public String run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Generate random ID
        final int id = Math.abs(new Random().nextInt());

        // Generate document
        final String jsonDocument = "{\"id\":\"" + id + "\", " +
                                    "\"description\": \"" + name + "\"}";

        context.getLogger().info("Document to be saved: " + jsonDocument);

        return jsonDocument;
    }

Gatilho HTTP, salve um documento no banco de dados via OutputType (Java)HTTP trigger, save one document to database via OutputBinding (Java)

O exemplo a seguir mostra uma função Java que grava um documento para CosmosDB por OutputBinding<T> meio de um parâmetro de saída.The following example shows a Java function that writes a document to CosmosDB via an OutputBinding<T> output parameter. Observe que, nessa configuração, é o outputItem parâmetro que precisa ser anotado @CosmosDBOutput, não a assinatura da função.Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. O OutputBinding<T> uso de permite que sua função Aproveite a associação para gravar o documento em CosmosDB enquanto também permite retornar um valor diferente para o chamador da função, como um documento JSON ou XML.Using OutputBinding<T> lets your function take advantage of the binding to write the document to CosmosDB while also allowing returning a different value to the function caller, such as a JSON or XML document.

    @FunctionName("WriteOneDocOutputBinding")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBOutput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            OutputBinding<String> outputItem,
            final ExecutionContext context) {

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Generate random ID
        final int id = Math.abs(new Random().nextInt());

        // Generate document
        final String jsonDocument = "{\"id\":\"" + id + "\", " +
                                    "\"description\": \"" + name + "\"}";

        context.getLogger().info("Document to be saved: " + jsonDocument);

        // Set outputItem's value to the JSON document to be saved
        outputItem.setValue(jsonDocument);

        // return a different document to the browser or calling client.
        return request.createResponseBuilder(HttpStatus.OK)
                      .body("Document created successfully.")
                      .build();
    }

Gatilho HTTP, salvar vários documentos no banco de dados por meio de Saídabinding (Java)HTTP trigger, save multiple documents to database via OutputBinding (Java)

O exemplo a seguir mostra uma função Java que grava vários documentos em CosmosDB por OutputBinding<T> meio de um parâmetro de saída.The following example shows a Java function that writes multiple documents to CosmosDB via an OutputBinding<T> output parameter. Observe que, nessa configuração, é o outputItem parâmetro que precisa ser anotado @CosmosDBOutput, não a assinatura da função.Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. O parâmetro de saída outputItem , tem uma lista ToDoItem de objetos como seu tipo de parâmetro de modelo.The output parameter, outputItem has a list of ToDoItem objects as its template parameter type. O OutputBinding<T> uso de permite que sua função Aproveite a associação para gravar os documentos em CosmosDB enquanto também permite retornar um valor diferente para o chamador da função, como um documento JSON ou XML.Using OutputBinding<T> lets your function take advantage of the binding to write the documents to CosmosDB while also allowing returning a different value to the function caller, such as a JSON or XML document.

    @FunctionName("WriteMultipleDocsOutputBinding")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req",
              methods = {HttpMethod.GET, HttpMethod.POST},
              authLevel = AuthorizationLevel.ANONYMOUS)
            HttpRequestMessage<Optional<String>> request,
            @CosmosDBOutput(name = "database",
              databaseName = "ToDoList",
              collectionName = "Items",
              connectionStringSetting = "Cosmos_DB_Connection_String")
            OutputBinding<List<ToDoItem>> outputItem,
            final ExecutionContext context) {

        // Parse query parameter
        String query = request.getQueryParameters().get("desc");
        String name = request.getBody().orElse(query);

        // Item list
        context.getLogger().info("Parameters are: " + request.getQueryParameters());

        // Generate documents
        List<ToDoItem> items = new ArrayList<>();

        for (int i = 0; i < 5; i ++) {
          // Generate random ID
          final int id = Math.abs(new Random().nextInt());

          // Create ToDoItem
          ToDoItem item = new ToDoItem(String.valueOf(id), name);

          items.add(item);
        }

        // Set outputItem's value to the list of POJOs to be saved
        outputItem.setValue(items);
        context.getLogger().info("Document to be saved: " + items);

        // return a different document to the browser or calling client.
        return request.createResponseBuilder(HttpStatus.OK)
                      .body("Documents created successfully.")
                      .build();
    }

Na biblioteca de tempo de execução de funções Java, use a @CosmosDBOutput anotação nos parâmetros que serão gravados em Cosmos DB.In the Java functions runtime library, use the @CosmosDBOutput annotation on parameters that will be written to Cosmos DB. O tipo de parâmetro Annotation deve OutputBinding<T>ser, em que T é um tipo Java nativo ou um POJO.The annotation parameter type should be OutputBinding<T>, where T is either a native Java type or a POJO.

Saída-exemplos do PythonOutput - Python examples

O exemplo a seguir demonstra como gravar um documento em um banco de dados CosmosDB do Azure como a saída de uma função.The following example demonstrates how to write a document to an Azure CosmosDB database as the output of a function.

A definição de associação é definida em Function. JSON , em que Type é definido como cosmosDB.The binding definition is defined in function.json where type is set to cosmosDB.

{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "cosmosDB",
      "direction": "out",
      "name": "doc",
      "databaseName": "demodb",
      "collectionName": "data",
      "createIfNotExists": "true",
      "connectionStringSetting": "AzureCosmosDBConnectionString"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    }
  ]
}

Para gravar no banco de dados, passe um objeto Document para set o método do parâmetro Database.To write to the database, pass a document object to the set method of the database parameter.

import azure.functions as func

def main(req: func.HttpRequest, doc: func.Out[func.Document]) -> func.HttpResponse:

    request_body = req.get_body()

    doc.set(func.Document.from_json(request_body))

    return 'OK'

Saída - atributosOutput - attributes

Em C# bibliotecas de classes, use o atributo CosmosDB .In C# class libraries, use the CosmosDB attribute.

Construtor do atributo pega o nome de base de dados e o nome da coleção.The attribute's constructor takes the database name and collection name. Para obter informações sobre essas configurações e outras propriedades que pode configurar, consulte de saída - configuração.For information about those settings and other properties that you can configure, see Output - configuration. Aqui está um CosmosDB exemplo de atributo numa assinatura do método:Here's a CosmosDB attribute example in a method signature:

    [FunctionName("QueueToDocDB")]
    public static void Run(
        [QueueTrigger("myqueue-items", Connection = "AzureWebJobsStorage")] string myQueueItem,
        [CosmosDB("ToDoList", "Items", Id = "id", ConnectionStringSetting = "myCosmosDB")] out dynamic document)
    {
        ...
    }

Para obter um exemplo completo, consulte saída C# -exemplo.For a complete example, see Output - C# example.

Saída - configuraçãoOutput - configuration

A tabela seguinte explica as propriedades de configuração de ligação definida no Function ficheiro e o CosmosDB atributo.The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

propriedade de Functionfunction.json property Propriedade de atributoAttribute property DescriçãoDescription
typetype Tem de ser definido como cosmosDB.Must be set to cosmosDB.
directiondirection Tem de ser definido como out.Must be set to out.
namename Nome do parâmetro de enlace que representa o documento na função.Name of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName A base de dados que contém a coleção onde o documento é criado.The database containing the collection where the document is created.
collectionNamecollectionName CollectionNameCollectionName O nome da coleção em que o documento é criado.The name of the collection where the document is created.
createIfNotExistscreateIfNotExists CreateIfNotExistsCreateIfNotExists Um valor booleano para indicar se a coleção é criada quando não existe.A boolean value to indicate whether the collection is created when it doesn't exist. A predefinição é false porque novas coleções são criadas com débito reservado, que tem custos implicações.The default is false because new collections are created with reserved throughput, which has cost implications. Para obter mais informações, veja a página de preços.For more information, see the pricing page.
partitionKeypartitionKey PartitionKeyPartitionKey Quando CreateIfNotExists é true, define o caminho de chave de partição para a coleção criada.When CreateIfNotExists is true, defines the partition key path for the created collection.
collectionThroughputcollectionThroughput CollectionThroughputCollectionThroughput Quando CreateIfNotExists for verdadeira, define a débito da coleção criada.When CreateIfNotExists is true, defines the throughput of the created collection.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting O nome da definição de aplicação que contém a cadeia de ligação do Azure Cosmos DB.The name of the app setting containing your Azure Cosmos DB connection string.

Quando estiver a desenvolver localmente, as definições da aplicação Ir para o Settings ficheiro.When you're developing locally, app settings go into the local.settings.json file.

Saída - utilizaçãoOutput - usage

Por predefinição, quando escreve para o parâmetro de saída na sua função, um documento é criado na base de dados.By default, when you write to the output parameter in your function, a document is created in your database. Este documento tem um GUID gerado automaticamente, como o ID do documento.This document has an automatically generated GUID as the document ID. Pode especificar o ID do documento do documento de saída especificando o id propriedade no objeto JSON passado para o parâmetro de saída.You can specify the document ID of the output document by specifying the id property in the JSON object passed to the output parameter.

Nota

Quando especificar o ID de um documento existente, seja substituída pelo novo documento de saída.When you specify the ID of an existing document, it gets overwritten by the new output document.

Exceções e códigos de retornoExceptions and return codes

VínculoBinding ReferênciaReference
CosmosDBCosmosDB Códigos de erro do cosmos DBCosmosDB Error Codes

definições de Host. JSONhost.json settings

Esta secção descreve as definições de configuração global disponíveis para essa ligação na versão 2.x.This section describes the global configuration settings available for this binding in version 2.x. Para obter mais informações sobre as definições de configuração global na versão 2.x, consulte referência de Host. JSON para a versão das funções do Azure 2.x.For more information about global configuration settings in version 2.x, see host.json reference for Azure Functions version 2.x.

{
    "version": "2.0",
    "extensions": {
        "cosmosDB": {
            "connectionMode": "Gateway",
            "protocol": "Https",
            "leaseOptions": {
                "leasePrefix": "prefix1"
            }
        }
    }
}
PropriedadeProperty PredefiniçãoDefault DescriçãoDescription
GatewayModeGatewayMode GatewayGateway O modo de conexão usado pela função ao se conectar ao serviço de Azure Cosmos DB.The connection mode used by the function when connecting to the Azure Cosmos DB service. As opções Direct são eGatewayOptions are Direct and Gateway
ProtocolProtocol HttpsHttps O protocolo de conexão usado pela função quando a conexão com o serviço de Azure Cosmos DB.The connection protocol used by the function when connection to the Azure Cosmos DB service. Leia aqui para obter uma explicação dos dois modosRead here for an explanation of both modes
leasePrefixleasePrefix n/dn/a Prefixo de concessão a ser usado em todas as funções em um aplicativo.Lease prefix to use across all functions in an app.

Passos SeguintesNext steps