Azure Cosmos DB-Bindungen für Azure Functions 2.xAzure Cosmos DB bindings for Azure Functions 2.x

In diesem Artikel wird die Verwendung von Azure Cosmos DB-Bindungen in Azure Functions 2.x erläutert.This article explains how to work with Azure Cosmos DB bindings in Azure Functions 2.x. Azure Functions unterstützt Trigger sowie Ein- und Ausgabebindungen für Azure Cosmos DB.Azure Functions supports trigger, input, and output bindings for Azure Cosmos DB.

Hinweis

Dieser Artikel gilt für Azure Functions Version 2.x.This article is for Azure Functions version 2.x. Informationen zur Verwendung dieser Bindungen in Functions 1.x finden Sie unter Azure Cosmos DB-Bindungen für Azure Functions.For information about how to use these bindings in Functions 1.x, see Azure Cosmos DB bindings for Azure Functions 1.x.

Diese Bindung hatte ursprünglich die Bezeichnung „DocumentDB“.This binding was originally named DocumentDB. In der Functions-Version 2.x wurden der Trigger, die Bindungen und das Paket jeweils mit dem Namen „Cosmos DB“ versehen.In Functions version 2.x, the trigger, bindings, and package are all named Cosmos DB.

Dies sind Referenzinformationen für Azure Functions-Entwickler.This is reference information for Azure Functions developers. Falls Sie mit Azure Functions noch nicht vertraut sind, beginnen Sie mit den folgenden Ressourcen:If you're new to Azure Functions, start with the following resources:

Unterstützte APIsSupported APIs

Azure Cosmos DB-Bindungen werden nur in Kombination mit der SQL-API unterstützt.Azure Cosmos DB bindings are only supported for use with the SQL API. Für alle anderen Azure Cosmos DB-APIs (einschließlich Azure Cosmos DB-API für MongoDB, Cassandra-API, Gremlin-API und Tabellen-API) müssen Sie für den Datenbankzugriff aus Ihrer Funktion den statischen Client für Ihre API verwenden.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.

Pakete: Functions 2.xPackages - Functions 2.x

Die Azure Cosmos DB-Bindungen für die Functions-Version 2.x werden im NuGet-Paket Microsoft.Azure.WebJobs.Extensions.CosmosDB (Version 3.x) bereitgestellt.The Azure Cosmos DB bindings for Functions version 2.x are provided in the Microsoft.Azure.WebJobs.Extensions.CosmosDB NuGet package, version 3.x. Den Quellcode für die Bindungen finden Sie im GitHub-Repository azure-webjobs-sdk-extensions.Source code for the bindings is in the azure-webjobs-sdk-extensions GitHub repository.

Der folgenden Tabelle können Sie entnehmen, wie Sie Unterstützung für diese Bindung in den einzelnen Entwicklungsumgebungen hinzufügen.The following table tells how to add support for this binding in each development environment.

EntwicklungsumgebungDevelopment environment Hinzufügen von Unterstützung inTo add support in
Functions 2.xFunctions 2.x
Lokale Entwicklung – C#-KlassenbibliothekLocal development - C# class library Paket installierenInstall the package
Lokale Entwicklung – C#-Skript, JavaScript, F#, Java und PythonLocal development - C# script, JavaScript, F#, Java and Python Erweiterung registrierenRegister the extension
Entwicklung im PortalPortal development Installieren beim Hinzufügen einer AusgabebindungInstall when adding output binding

Informationen zum Aktualisieren der vorhandenen Bindungserweiterungen im Portal ohne erneute Veröffentlichung Ihres Funktions-App-Projekts finden Sie unter Manually install or update Azure Functions binding extensions from the portal (Manuelles Installieren oder Aktualisieren von Azure Functions-Bindungserweiterungen über das Portal).To learn how to update existing binding extensions in the portal without having to republish your function app project, see Update your extensions.

TriggerTrigger

Informationen zum partitionsübergreifenden Lauschen auf Einfügungen und Aktualisierungen durch den Azure Cosmos DB-Trigger finden Sie unter Verwenden der Unterstützung von Änderungsfeeds in Azure Cosmos DB.The Azure Cosmos DB Trigger uses the Azure Cosmos DB Change Feed to listen for inserts and updates across partitions. Der Änderungsfeed veröffentlicht Einfügungen und Updates, keine Löschungen.The change feed publishes inserts and updates, not deletions.

Trigger: BeispielTrigger - example

Sehen Sie sich das sprachspezifische Beispiel an:See the language-specific example:

Trigger-Beispiele überspringenSkip trigger examples

Trigger: C#-BeispielTrigger - C# example

Das folgende Beispiel zeigt eine C#-Funktion, die aufgerufen wird, wenn etwas in der angegebenen Datenbank und Sammlung eingefügt oder aktualisiert wird.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}");
            }
        }
    }
}

Trigger-Beispiele überspringenSkip trigger examples

Trigger: C#-SkriptbeispielTrigger - C# script example

Das folgende Beispiel zeigt eine Cosmos DB-Triggerbindung in einer Datei function.json sowie eine C#-Skriptfunktion, die die Bindung verwendet.The following example shows a Cosmos DB trigger binding in a function.json file and a C# script function that uses the binding. Die Funktion schreibt Protokollmeldungen, wenn Cosmos DB-Datensätze geändert werden.The function writes log messages when Cosmos DB records are modified.

Bindungsdaten in der Datei function.json: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
    }

Trigger-Beispiele überspringenSkip trigger examples

Trigger: JavaScript-BeispielTrigger - JavaScript example

Das folgende Beispiel zeigt eine Cosmos DB-Triggerbindung in einer Datei function.json sowie eine JavaScript-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB trigger binding in a function.json file and a JavaScript function that uses the binding. Die Funktion schreibt Protokollmeldungen, wenn Cosmos DB-Datensätze geändert werden.The function writes log messages when Cosmos DB records are modified.

Bindungsdaten in der Datei function.json: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
}

Der JavaScript-Code sieht wie folgt aus:Here's the JavaScript code:

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

      context.done();
    }

Trigger: Java-BeispielTrigger - Java example

Das folgende Beispiel zeigt eine Cosmos DB-Triggerbindung in einer Datei function.json sowie eine Java-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB trigger binding in function.json file and a Java function that uses the binding. Die Funktion wird aufgerufen, wenn etwas in der angegebenen Datenbank und Sammlung eingefügt oder aktualisiert wird.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
}

Dies ist der Java-Code: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.");
            }

Verwenden Sie die @CosmosDBTrigger-Anmerkung in der Laufzeitbibliothek für Java-Funktionen für Parameter, deren Wert von Cosmos DB empfangen wird.In the Java functions runtime library, use the @CosmosDBTrigger annotation on parameters whose value would come from Cosmos DB. Diese Anmerkung kann mit nativen Java-Typen, POJOs oder Werten mit Optional<T> verwendet werden, die NULL-Werte annehmen können.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

Trigger-Beispiele überspringenSkip trigger examples

Trigger: Beispiel für PythonTrigger - Python example

Das folgende Beispiel zeigt eine Cosmos DB-Triggerbindung in einer Datei namens function.json sowie eine Python-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB trigger binding in a function.json file and a Python function that uses the binding. Die Funktion schreibt Protokollmeldungen, wenn Cosmos DB-Datensätze geändert werden.The function writes log messages when Cosmos DB records are modified.

Bindungsdaten in der Datei function.json: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
}

Python-Code: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'])

Trigger: C#-AttributeTrigger - C# attributes

In C#-Klassenbibliotheken verwenden Sie das CosmosDBTrigger-Attribut.In C# class libraries, use the CosmosDBTrigger attribute.

Der Attributkonstruktor akzeptiert den Datenbanknamen und den Sammlungsnamen.The attribute's constructor takes the database name and collection name. Weitere Informationen zu diesen Einstellungen und anderen Eigenschaften, die Sie konfigurieren können, finden Sie unter Trigger: Konfiguration.For information about those settings and other properties that you can configure, see Trigger - configuration. Hier ist ein Beispiel für ein CosmosDBTrigger-Attribut in einer Methodensignatur: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)
    {
        ...
    }

Ein vollständiges Beispiel finden Sie unter Trigger: C#-Beispiel.For a complete example, see Trigger - C# example.

Trigger: KonfigurationTrigger - configuration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json und im Attribut CosmosDBTrigger festlegen:The following table explains the binding configuration properties that you set in the function.json file and the CosmosDBTrigger attribute.

Eigenschaft von „function.json“function.json property AttributeigenschaftAttribute property BESCHREIBUNGDescription
typetype Muss auf cosmosDBTrigger festgelegt sein.Must be set to cosmosDBTrigger.
directiondirection Muss auf in festgelegt sein.Must be set to in. Dieser Parameter wird automatisch festgelegt, wenn Sie den Trigger im Azure Portal erstellen.This parameter is set automatically when you create the trigger in the Azure portal.
namename Der im Code der Funktion verwendete Variablenname, der die Liste der Dokumente mit Änderungen darstellt.The variable name used in function code that represents the list of documents with changes.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting Der Name einer App-Einstellung, die die Verbindungszeichenfolge enthält, die zum Herstellen der Verbindung mit dem überwachten Azure Cosmos DB-Konto verwendet wird.The name of an app setting that contains the connection string used to connect to the Azure Cosmos DB account being monitored.
databaseNamedatabaseName DatabaseNameDatabaseName Der Name der Azure Cosmos DB-Datenbank mit der überwachten Sammlung.The name of the Azure Cosmos DB database with the collection being monitored.
collectionNamecollectionName CollectionNameCollectionName Der Name der überwachten Sammlung.The name of the collection being monitored.
leaseConnectionStringSettingleaseConnectionStringSetting LeaseConnectionStringSettingLeaseConnectionStringSetting (Optional) Der Name einer App-Einstellung, die die Verbindungszeichenfolge für den Dienst enthält, in dem die Leasesammlung enthalten ist.(Optional) The name of an app setting that contains the connection string to the service which holds the lease collection. Wenn nicht festgelegt, wird der Wert connectionStringSetting verwendet.When not set, the connectionStringSetting value is used. Dieser Parameter wird automatisch festgelegt, wenn die Bindung im Portal erstellt wird.This parameter is automatically set when the binding is created in the portal. Die Verbindungszeichenfolge für die Leasesammlung muss über Schreibberechtigungen verfügen.The connection string for the leases collection must have write permissions.
leaseDatabaseNameleaseDatabaseName LeaseDatabaseNameLeaseDatabaseName (Optional) Der Name der Datenbank, in der die Sammlung zum Speichern von Leases enthalten ist.(Optional) The name of the database that holds the collection used to store leases. Wenn nicht festgelegt, wird der Wert der databaseName-Einstellung verwendet.When not set, the value of the databaseName setting is used. Dieser Parameter wird automatisch festgelegt, wenn die Bindung im Portal erstellt wird.This parameter is automatically set when the binding is created in the portal.
leaseCollectionNameleaseCollectionName LeaseCollectionNameLeaseCollectionName (Optional) Der Name der Sammlung, die zum Speichern von Leases verwendet wird.(Optional) The name of the collection used to store leases. Wenn nicht festgelegt, wird der Wert leases verwendet.When not set, the value leases is used.
createLeaseCollectionIfNotExistscreateLeaseCollectionIfNotExists CreateLeaseCollectionIfNotExistsCreateLeaseCollectionIfNotExists (Optional) Bei Festlegung auf true wird die Sammlung von Leases automatisch erstellt, wenn sie nicht bereits vorhanden ist.(Optional) When set to true, the leases collection is automatically created when it doesn't already exist. Standardwert: false.The default value is false.
leasesCollectionThroughputleasesCollectionThroughput LeasesCollectionThroughputLeasesCollectionThroughput (Optional) Definiert die Anzahl von Anforderungseinheiten, die zugewiesen werden, wenn die Leasesammlung erstellt wird.(Optional) Defines the amount of Request Units to assign when the leases collection is created. Diese Einstellung wird nur verwendet, wenn createLeaseCollectionIfNotExists auf true festgelegt ist.This setting is only used When createLeaseCollectionIfNotExists is set to true. Dieser Parameter wird automatisch festgelegt, wenn die Bindung im Portal erstellt wird.This parameter is automatically set when the binding is created using the portal.
leaseCollectionPrefixleaseCollectionPrefix LeaseCollectionPrefixLeaseCollectionPrefix (Optional) Wenn gesetzt, wird ein Präfix zu den Leases hinzugefügt, die in der Leasesammlung für diese Funktion erstellt wurden, sodass zwei separate Azure-Funktionen dieselbe Leasesammlung mit unterschiedlichen Präfixen gemeinsam nutzen können.(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 (Optinal) Wenn gesetzt, wird die Verzögerung in Millisekunden zwischen den Abfragen an eine Partition nach neuen Änderungen auf dem Feed definiert, nachdem alle aktuellen Änderungen beseitigt wurden.(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. Der Standardwert ist 5000 (5 Sekunden).Default is 5000 (5 seconds).
leaseAcquireIntervalleaseAcquireInterval LeaseAcquireIntervalLeaseAcquireInterval (Optional) Wenn gesetzt, wird das Intervall in Millisekunden definiert, das eine Aufgabe anstößt, die berechnet, ob Partitionen unter den bekannten Hostinstanzen gleichmäßig verteilt sind.(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. Der Standardwert ist 13000 (13 Sekunden).Default is 13000 (13 seconds).
leaseExpirationIntervalleaseExpirationInterval LeaseExpirationIntervalLeaseExpirationInterval (Optional) Wenn gesetzt, wird das Intervall in Millisekunden definiert, für das die Lease für eine Lease, die eine Partition darstellt, ausgeführt wird.(Optional) When set, it defines, in milliseconds, the interval for which the lease is taken on a lease representing a partition. Wenn die Lease innerhalb dieses Intervalls nicht erneuert wird, läuft sie ab, und der Besitz der Partition wechselt zu einer anderen Instanz.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. Der Standardwert ist 60000 (60 Sekunden).Default is 60000 (60 seconds).
leaseRenewIntervalleaseRenewInterval LeaseRenewIntervalLeaseRenewInterval (Optional) Wenn gesetzt, wird das Erneuerungsintervall in Millisekunden für alle Leases für Partitionen definiert, die aktuell in einer Instanz vorhanden sind.(Optional) When set, it defines, in milliseconds, the renew interval for all leases for partitions currently held by an instance. Der Standardwert ist 17000 (17 Sekunden).Default is 17000 (17 seconds).
checkpointFrequencycheckpointFrequency CheckpointFrequencyCheckpointFrequency (Optional) Wenn gesetzt, wird das Intervall in Millisekunden zwischen Leaseprüfpunkten definiert.(Optional) When set, it defines, in milliseconds, the interval between lease checkpoints. Dies ist standardmäßig immer nach einem erfolgreichen Funktionsaufruf der Fall.Default is always after each Function call.
maxItemsPerInvocationmaxItemsPerInvocation MaxItemsPerInvocationMaxItemsPerInvocation (Optional) Wenn gesetzt, wird die Höchstzahl von Elementen angepasst, die von einem Funktionsaufruf empfangen werden können.(Optional) When set, it customizes the maximum amount of items received per Function call.
startFromBeginningstartFromBeginning StartFromBeginningStartFromBeginning (Optional) Wenn dieser Parameter festgelegt ist, liest der Trigger Änderungen beginnend vom Anfang des Verlaufs der Sammlung anstatt ab der aktuellen Zeit.(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. Dies funktioniert nur beim ersten Start des Triggers. Bei nachfolgenden Ausführungen sind die Prüfpunkte bereits gespeichert.This only works the first time the Trigger starts, as in subsequent runs, the checkpoints are already stored. Wenn die Leases bereits erstellt sind, hat das Festlegen auf den Wert true keine Auswirkungen.Setting this to true when there are leases already created has no effect.

Wenn Sie lokal entwickeln, werden App-Einstellungen in der Datei „local.settings.json“ gespeichert.When you're developing locally, app settings go into the local.settings.json file.

Trigger: VerwendungTrigger - usage

Der Trigger erfordert eine zweite Sammlung, die er zum Speichern von Leases auf den Partitionen verwendet.The trigger requires a second collection that it uses to store leases over the partitions. Sowohl die überwachte Sammlung als auch die, die die Leases enthält, muss verfügbar sein, damit der Trigger funktioniert.Both the collection being monitored and the collection that contains the leases must be available for the trigger to work.

Wichtig

Falls mehrere Funktionen für die Verwendung eines Cosmos DB-Triggers für die gleiche Sammlung konfiguriert sind, muss jede dieser Funktionen eine dedizierte Leasesammlung verwenden oder für jede Funktion ein anderes LeaseCollectionPrefix angeben.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. Andernfalls wird nur eine der Funktionen ausgelöst.Otherwise, only one of the functions will be triggered. Weitere Informationen zu diesem Präfix finden Sie im Konfigurationsabschnitt.For information about the prefix, see the Configuration section.

Der Trigger gibt nicht an, ob ein Dokument aktualisiert oder eingefügt wurde, er stellt das Dokument lediglich bereit.The trigger doesn't indicate whether a document was updated or inserted, it just provides the document itself. Wenn Sie Aktualisierungen und Einfügungen unterschiedlich verarbeiten müssen, können Sie dazu Zeitstempelfelder für Einfügung oder Aktualisierung implementieren.If you need to handle updates and inserts differently, you could do that by implementing timestamp fields for insertion or update.

EingabeInput

Die Azure Cosmos DB-Eingabebindung verwendet die SQL-API, um mindestens ein Azure Cosmos DB-Dokument abzurufen und an den Eingabeparameter der Funktion zu übergeben.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. Die Dokument-ID oder die Abfrageparameter können basierend auf dem Trigger, der die Funktion aufruft, ermittelt werden.The document ID or query parameters can be determined based on the trigger that invokes the function.

Eingabe: BeispieleInput - examples

Sehen Sie sich die sprachspezifischen Beispiele an, in denen ein ID-Wert angegeben wird, um ein einzelnes Dokument zu lesen:See the language-specific examples that read a single document by specifying an ID value:

Eingabebeispiele überspringenSkip input examples

Eingabe: C#-BeispieleInput - C# examples

Dieser Abschnitt enthält folgende Beispiele:This section contains the following examples:

Die Beispiele beziehen sich auf einen einfachen ToDoItem-Typ:The examples refer to a simple ToDoItem type:

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

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Suchen der ID in JSON-Code (C#)Queue trigger, look up ID from JSON (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die ein einzelnes Dokument abruft.The following example shows a C# function that retrieves a single document. Die Funktion wird durch eine Warteschlangennachricht ausgelöst, die ein JSON-Objekt enthält.The function is triggered by a queue message that contains a JSON object. Der Warteschlangentrigger zerlegt den JSON-Code in ein Objekt namens ToDoItemLookup, das die zu suchende ID enthält.The queue trigger parses the JSON into an object named ToDoItemLookup, which contains the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.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}");
            }
        }
    }
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge (C#)HTTP trigger, look up ID from query string (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die ein einzelnes Dokument abruft.The following example shows a C# function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Hinweis

Beim Wert für den HTTP-Abfragezeichenfolge-Parameter muss die Groß-/Kleinschreibung beachtet werden.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();
        }
    }
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in Routendaten (C#)HTTP trigger, look up ID from route data (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die ein einzelnes Dokument abruft.The following example shows a C# function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Routendaten verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.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();
        }
    }
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in Routendaten unter Verwendung von „SqlQuery“ (C#)HTTP trigger, look up ID from route data, using SqlQuery (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die ein einzelnes Dokument abruft.The following example shows a C# function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Routendaten verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Das Beispiel veranschaulicht die Verwendung eines Bindungsausdrucks im Parameter SqlQuery.The example shows how to use a binding expression in the SqlQuery parameter. Sie können Routendaten wie gezeigt an den Parameter SqlQuery übergeben. Die Übergabe von Abfragezeichenfolgenwerten ist derzeit allerdings nicht möglich.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();
        }
    }
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Abrufen mehrerer Dokumente unter Verwendung von „SqlQuery“ (C#)HTTP trigger, get multiple docs, using SqlQuery (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die eine Liste von Dokumenten abruft.The following example shows a C# function that retrieves a list of documents. Die Funktion wird durch eine HTTP-Anforderung ausgelöst.The function is triggered by an HTTP request. Die Abfrage wird in der Attributeigenschaft SqlQuery angegeben.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();
        }
    }
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Abrufen mehrerer Dokumente unter Verwendung von „DocumentClient“ (C#)HTTP trigger, get multiple docs, using DocumentClient (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die eine Liste von Dokumenten abruft.The following example shows a C# function that retrieves a list of documents. Die Funktion wird durch eine HTTP-Anforderung ausgelöst.The function is triggered by an HTTP request. Der Code verwendet eine von der Azure Cosmos DB-Bindung bereitgestellte DocumentClient-Instanz, um eine Liste von Dokumenten zu lesen.The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. Die DocumentClient-Instanz kann auch für Schreibvorgänge verwendet werden.The DocumentClient instance could also be used for write operations.

Hinweis

Sie können auch die IDocumentClient-Schnittstelle verwenden, um das Testen zu vereinfachen.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();
        }
    }
}

Eingabebeispiele überspringenSkip input examples

Eingabe: C#-SkriptbeispieleInput - C# script examples

Dieser Abschnitt enthält folgende Beispiele:This section contains the following examples:

Die Beispiele für einen HTTP-Trigger beziehen sich auf einen einfachen ToDoItem-Typ: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; }
    }
}

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Suchen der ID in einer Zeichenfolge (C#-Skript)Queue trigger, look up ID from string (C# script)

Das folgende Beispiel zeigt eine Cosmos DB-Eingabebindung in einer Datei function.json sowie eine C#-Skriptfunktion, die die Bindung verwendet.The following example shows a Cosmos DB input binding in a function.json file and a C# script function that uses the binding. Die Funktion liest ein einzelnes Dokument und aktualisiert den Textwert des Dokuments.The function reads a single document and updates the document's text value.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der C#-Skriptcode sieht wie folgt aus: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.";
    }

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Abrufen mehrerer Dokumente unter Verwendung von „SqlQuery“ (C#-Skript)Queue trigger, get multiple docs, using SqlQuery (C# script)

Das folgende Beispiel zeigt eine Azure Cosmos DB-Eingabebindung in einer function.json-Datei sowie eine C#-Skriptfunktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB input binding in a function.json file and a C# script function that uses the binding. Die Funktion ruft mehrere von einer SQL-Abfrage angegebene Dokumente mithilfe eines Warteschlangentriggers ab, um die Abfrageparameter anzupassen.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

Der Warteschlangentrigger stellt den Parameter departmentId bereit.The queue trigger provides a parameter departmentId. Die Warteschlangennachricht { "departmentId" : "Finance" } gibt dann alle Datensätze für die Finanzabteilung zurück.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der C#-Skriptcode sieht wie folgt aus: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; }
    }

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge (C#-Skript)HTTP trigger, look up ID from query string (C# script)

Das folgende Beispiel zeigt eine C#-Skriptfunktion, die ein einzelnes Dokument abruft.The following example shows a C# script function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in Routendaten (C#-Skript)HTTP trigger, look up ID from route data (C# script)

Das folgende Beispiel zeigt eine C#-Skriptfunktion, die ein einzelnes Dokument abruft.The following example shows a C# script function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Routendaten verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses route data to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Abrufen mehrerer Dokumente unter Verwendung von „SqlQuery“ (C#-Skript)HTTP trigger, get multiple docs, using SqlQuery (C# script)

Das folgende Beispiel zeigt eine C#-Skriptfunktion, die eine Liste von Dokumenten abruft.The following example shows a C# script function that retrieves a list of documents. Die Funktion wird durch eine HTTP-Anforderung ausgelöst.The function is triggered by an HTTP request. Die Abfrage wird in der Attributeigenschaft SqlQuery angegeben.The query is specified in the SqlQuery attribute property.

Die Datei function.json sieht wie folgt aus: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
}

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Abrufen mehrerer Dokumente unter Verwendung von „DocumentClient“ (C#-Skript)HTTP trigger, get multiple docs, using DocumentClient (C# script)

Das folgende Beispiel zeigt eine C#-Skriptfunktion, die eine Liste von Dokumenten abruft.The following example shows a C# script function that retrieves a list of documents. Die Funktion wird durch eine HTTP-Anforderung ausgelöst.The function is triggered by an HTTP request. Der Code verwendet eine von der Azure Cosmos DB-Bindung bereitgestellte DocumentClient-Instanz, um eine Liste von Dokumenten zu lesen.The code uses a DocumentClient instance provided by the Azure Cosmos DB binding to read a list of documents. Die DocumentClient-Instanz kann auch für Schreibvorgänge verwendet werden.The DocumentClient instance could also be used for write operations.

Die Datei function.json sieht wie folgt aus: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
}

Eingabebeispiele überspringenSkip input examples

Eingabe: JavaScript-BeispieleInput - JavaScript examples

Dieser Abschnitt enthält die folgenden Beispiele, die ein einzelnes Dokument lesen, indem ein ID-Wert aus verschiedenen Quellen angegeben wird:This section contains the following examples that read a single document by specifying an ID value from various sources:

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Suchen der ID in JSON-Code (JavaScript)Queue trigger, look up ID from JSON (JavaScript)

Das folgende Beispiel zeigt eine Cosmos DB-Eingabebindung in einer Datei function.json sowie eine JavaScript-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. Die Funktion liest ein einzelnes Dokument und aktualisiert den Textwert des Dokuments.The function reads a single document and updates the document's text value.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der JavaScript-Code sieht wie folgt aus: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();
    };

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge (JavaScript)HTTP trigger, look up ID from query string (JavaScript)

Das folgende Beispiel zeigt eine JavaScript-Skriptfunktion, die ein einzelnes Dokument abruft.The following example shows a JavaScript function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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
}

Der JavaScript-Code sieht wie folgt aus: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();
};

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in Routendaten (JavaScript)HTTP trigger, look up ID from route data (JavaScript)

Das folgende Beispiel zeigt eine JavaScript-Skriptfunktion, die ein einzelnes Dokument abruft.The following example shows a JavaScript function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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
}

Der JavaScript-Code sieht wie folgt aus: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();
};

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Abrufen mehrerer Dokumente unter Verwendung von „SqlQuery“ (JavaScript)Queue trigger, get multiple docs, using SqlQuery (JavaScript)

Das folgende Beispiel zeigt eine Azure Cosmos DB-Eingabebindung in einer function.json-Datei sowie eine JavaScript-Funktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB input binding in a function.json file and a JavaScript function that uses the binding. Die Funktion ruft mehrere von einer SQL-Abfrage angegebene Dokumente mithilfe eines Warteschlangentriggers ab, um die Abfrageparameter anzupassen.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

Der Warteschlangentrigger stellt den Parameter departmentId bereit.The queue trigger provides a parameter departmentId. Die Warteschlangennachricht { "departmentId" : "Finance" } gibt dann alle Datensätze für die Finanzabteilung zurück.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der JavaScript-Code sieht wie folgt aus: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();
    };

Eingabebeispiele überspringenSkip input examples

Eingabe: Beispiele für PythonInput - Python examples

Dieser Abschnitt enthält die folgenden Beispiele, die ein einzelnes Dokument lesen, indem ein ID-Wert aus verschiedenen Quellen angegeben wird:This section contains the following examples that read a single document by specifying an ID value from various sources:

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Suchen der ID in JSON-Code (Python)Queue trigger, look up ID from JSON (Python)

Das folgende Beispiel zeigt eine Cosmos DB-Eingabebindung in einer Datei namens function.json sowie eine Python-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB input binding in a function.json file and a Python function that uses the binding. Die Funktion liest ein einzelnes Dokument und aktualisiert den Textwert des Dokuments.The function reads a single document and updates the document's text value.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Python-Code: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

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge (Python)HTTP trigger, look up ID from query string (Python)

Das folgende Beispiel zeigt eine Python-Funktion, die ein einzelnes Dokument abruft.The following example shows a Python function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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"
}

Python-Code: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'

Eingabebeispiele überspringenSkip input examples

HTTP-Trigger: Suchen der ID in Routendaten (Python)HTTP trigger, look up ID from route data (Python)

Das folgende Beispiel zeigt eine Python-Funktion, die ein einzelnes Dokument abruft.The following example shows a Python function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by an HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument vom Typ ToDoItem aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a ToDoItem document from the specified database and collection.

Die Datei function.json sieht wie folgt aus: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"
}

Python-Code: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'

Eingabebeispiele überspringenSkip input examples

Warteschlangentrigger: Abrufen mehrerer Dokumente unter Verwendung von „SqlQuery“ (Python)Queue trigger, get multiple docs, using SqlQuery (Python)

Das folgende Beispiel zeigt eine Azure Cosmos DB-Eingabebindung in einer Datei namens function.json sowie eine Python-Funktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB input binding in a function.json file and a Python function that uses the binding. Die Funktion ruft mehrere von einer SQL-Abfrage angegebene Dokumente mithilfe eines Warteschlangentriggers ab, um die Abfrageparameter anzupassen.The function retrieves multiple documents specified by a SQL query, using a queue trigger to customize the query parameters.

Der Warteschlangentrigger stellt den Parameter departmentId bereit.The queue trigger provides a parameter departmentId. Die Warteschlangennachricht { "departmentId" : "Finance" } gibt dann alle Datensätze für die Finanzabteilung zurück.A queue message of { "departmentId" : "Finance" } would return all records for the finance department.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Python-Code: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

Eingabebeispiele überspringenSkip input examples

Eingabe: F#-BeispieleInput - F# examples

Das folgende Beispiel zeigt eine Cosmos DB-Eingabebindung in einer Datei function.json sowie eine F#-Funktion, die die Bindung verwendet.The following example shows a Cosmos DB input binding in a function.json file and a F# function that uses the binding. Die Funktion liest ein einzelnes Dokument und aktualisiert den Textwert des Dokuments.The function reads a single document and updates the document's text value.

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der F#-Code lautet wie folgt: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."

Dieses Beispiel erfordert die Datei project.json, die die NuGet-Abhängigkeiten FSharp.Interop.Dynamic und Dynamitey angibt: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"
            }
        }
    }
}

Informationen zum Hinzufügen einer project.json-Datei finden Sie unter Paketverwaltung.To add a project.json file, see F# package management.

Eingabe: Java-BeispieleInput - Java examples

Dieser Abschnitt enthält folgende Beispiele:This section contains the following examples:

Die Beispiele beziehen sich auf einen einfachen ToDoItem-Typ: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 + "}";
  }
}

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge – Zeichenfolgenparameter (Java)HTTP trigger, look up ID from query string - String parameter (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die ein einzelnes Dokument abruft.The following example shows a Java function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by a HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument in Zeichenfolgenform aus der angegebenen Datenbank und Sammlung abgerufen.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();
        }
    }
}

Verwenden Sie die @CosmosDBInput-Anmerkung in der Laufzeitbibliothek für Java-Funktionen für Funktionsparameter, deren Wert von Cosmos DB empfangen wird.In the Java functions runtime library, use the @CosmosDBInput annotation on function parameters whose value would come from Cosmos DB. Diese Anmerkung kann mit nativen Java-Typen, POJOs oder Werten mit Optional<T> verwendet werden, die NULL-Werte annehmen können.This annotation can be used with native Java types, POJOs, or nullable values using Optional<T>.

HTTP-Trigger: Suchen der ID in einer Abfragezeichenfolge – POJO-Parameter (Java)HTTP trigger, look up ID from query string - POJO parameter (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die ein einzelnes Dokument abruft.The following example shows a Java function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die eine Abfragezeichenfolge verwendet, um die zu suchende ID anzugeben.The function is triggered by a HTTP request that uses a query string to specify the ID to look up. Anhand dieser ID wird ein Dokument aus der angegebenen Datenbank und Sammlung abgerufen.That ID is used to retrieve a document from the specified database and collection. Das Dokument wird dann in eine Instanz des zuvor erstellten ToDoItem POJO konvertiert und als Argument an die Funktion übergeben.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();
        }
    }
}

HTTP-Trigger: Suchen der ID in Routendaten (Java)HTTP trigger, look up ID from route data (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die ein einzelnes Dokument abruft.The following example shows a Java function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die einen Routenparameter verwendet, um die zu suchende ID anzugeben.The function is triggered by a HTTP request that uses a route parameter to specify the ID to look up. Anhand dieser ID wird ein Dokument aus der angegebenen Datenbank und Sammlung abgerufen und als Optional<String> zurückgegeben.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();
        }
    }
}

HTTP-Trigger: Suchen der ID in Routendaten unter Verwendung von „SqlQuery“ (Java)HTTP trigger, look up ID from route data, using SqlQuery (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die ein einzelnes Dokument abruft.The following example shows a Java function that retrieves a single document. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die einen Routenparameter verwendet, um die zu suchende ID anzugeben.The function is triggered by a HTTP request that uses a route parameter to specify the ID to look up. Diese ID wird verwendet, um ein Dokument aus der angegebenen Datenbank und Sammlung abzurufen, wobei das Resultset in ein ToDoItem[] konvertiert wird, da viele Dokumente zurückgegeben werden können, je nach den Abfragekriterien.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();
        }
    }
}

HTTP-Trigger: Abrufen mehrerer Dokumente aus Routendaten unter Verwendung von SqlQuery (Java)HTTP trigger, get multiple docs from route data, using SqlQuery (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die mehrere Dokumente abruft.The following example shows a Java function that multiple documents. Die Funktion wird durch eine HTTP-Anforderung ausgelöst, die den Routenparameter desc verwendet, um die in dem Feld description zu suchende Zeichenfolge anzugeben.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. Der Suchbegriff wird verwendet, um ein Sammlung von Dokumenten aus der angegebenen Datenbank und Sammlung abzurufen, wobei das Resultset in ein ToDoItem[] konvertiert und dieses als Argument an die Funktion übergeben wird.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();
        }
    }
}

Eingabe: AttributeInput - attributes

Verwenden Sie in C#-Klassenbibliotheken das Attribut CosmosDB.In C# class libraries, use the CosmosDB attribute.

Der Attributkonstruktor akzeptiert den Datenbanknamen und den Sammlungsnamen.The attribute's constructor takes the database name and collection name. Weitere Informationen zu diesen Einstellungen und anderen Eigenschaften, die Sie konfigurieren können, finden Sie im folgenden Konfigurationsabschnitt.For information about those settings and other properties that you can configure, see the following configuration section.

Eingabe: KonfigurationInput - configuration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json und im Attribut CosmosDB festlegen:The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

Eigenschaft von „function.json“function.json property AttributeigenschaftAttribute property BESCHREIBUNGDescription
typetype Muss auf cosmosDB festgelegt sein.Must be set to cosmosDB.
directiondirection Muss auf in festgelegt sein.Must be set to in.
namename Der Name des Bindungsparameters, der das Dokument in der Funktion darstelltName of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName Die Datenbank mit dem DokumentThe database containing the document.
collectionNamecollectionName CollectionNameCollectionName Der Name der Sammlung mit dem DokumentThe name of the collection that contains the document.
idid IdId Die ID des abzurufenden Dokuments.The ID of the document to retrieve. Diese Eigenschaft unterstützt Bindungsausdrücke.This property supports binding expressions. Legen Sie nicht die beiden Eigenschaften id und sqlQuery fest.Don't set both the id and sqlQuery properties. Wenn Sie keine der beiden festlegen, wird die gesamte Sammlung abgerufen.If you don't set either one, the entire collection is retrieved.
sqlQuerysqlQuery SqlQuerySqlQuery Eine SQL-Abfrage in Azure Cosmos DB zum Abrufen mehrerer Dokumente.An Azure Cosmos DB SQL query used for retrieving multiple documents. Die Eigenschaft unterstützt Laufzeitbindungen, wie in diesem Beispiel: SELECT * FROM c where c.departmentId = {departmentId}.The property supports runtime bindings, as in this example: SELECT * FROM c where c.departmentId = {departmentId}. Legen Sie nicht die beiden Eigenschaften id und sqlQuery fest.Don't set both the id and sqlQuery properties. Wenn Sie keine der beiden festlegen, wird die gesamte Sammlung abgerufen.If you don't set either one, the entire collection is retrieved.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting Der Name der App-Einstellung mit Ihrer Azure Cosmos DB-Verbindungszeichenfolge.The name of the app setting containing your Azure Cosmos DB connection string.
partitionKeypartitionKey PartitionKeyPartitionKey Gibt den Wert des Partitionsschlüssels für die Suche an.Specifies the partition key value for the lookup. Kann den Bindungsparameter enthalten.May include binding parameters.

Wenn Sie lokal entwickeln, werden App-Einstellungen in der Datei „local.settings.json“ gespeichert.When you're developing locally, app settings go into the local.settings.json file.

Eingabe: VerwendungInput - usage

Wenn in C#- und F#-Funktionen die Funktion erfolgreich beendet wird, werden alle Änderungen am Eingabedokument mithilfe benannter Eingabeparameter automatisch beibehalten.In C# and F# functions, when the function exits successfully, any changes made to the input document via named input parameters are automatically persisted.

In JavaScript-Funktionen erfolgen Aktualisierungen bei Beenden der Funktion nicht automatisch.In JavaScript functions, updates are not made automatically upon function exit. Verwenden Sie stattdessen context.bindings.<documentName>In und context.bindings.<documentName>Out, um Aktualisierungen vorzunehmen.Instead, use context.bindings.<documentName>In and context.bindings.<documentName>Out to make updates. Siehe das JavaScript-Beispiel.See the JavaScript example.

OutputOutput

Die Azure Cosmos DB-Ausgabebindung ermöglicht das Schreiben eines neuen Dokuments in eine Azure Cosmos DB-Datenbank mithilfe der SQL-API.The Azure Cosmos DB output binding lets you write a new document to an Azure Cosmos DB database using the SQL API.

Ausgabe – BeispieleOutput - examples

Sehen Sie sich die sprachspezifischen Beispiele an:See the language-specific examples:

Sehen Sie sich auch das Eingabebeispiel mit DocumentClient an.See also the input example that uses DocumentClient.

Ausgabebeispiele überspringenSkip output examples

Ausgabe: C#-BeispieleOutput - C# examples

Dieser Abschnitt enthält folgende Beispiele:This section contains the following examples:

  • Warteschlangentrigger: Schreiben eines einzelnen DokumentsQueue trigger, write one doc
  • Warteschlangentrigger: Schreiben von Dokumenten unter Verwendung von „IAsyncCollector“Queue trigger, write docs using IAsyncCollector

Die Beispiele beziehen sich auf einen einfachen ToDoItem-Typ:The examples refer to a simple ToDoItem type:

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

Ausgabebeispiele überspringenSkip output examples

Warteschlangentrigger: Schreiben eines einzelnen Dokuments (C#)Queue trigger, write one doc (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die einer Datenbank ein Dokument hinzufügt und dazu die Daten aus der Meldung vom Warteschlangenspeicher verwendet.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}");
        }
    }
}

Ausgabebeispiele überspringenSkip output examples

Warteschlangentrigger: Schreiben von Dokumenten unter Verwendung von „IAsyncCollector“ (C#)Queue trigger, write docs using IAsyncCollector (C#)

Das folgende Beispiel zeigt eine C#-Funktion, die einer Datenbank eine Sammlung von Dokumenten hinzufügt und dabei Daten aus dem JSON-Code einer Warteschlangennachricht verwendet.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);
            }
        }
    }
}

Ausgabebeispiele überspringenSkip output examples

Ausgabe: C#-SkriptbeispieleOutput - C# script examples

Dieser Abschnitt enthält folgende Beispiele:This section contains the following examples:

  • Warteschlangentrigger: Schreiben eines einzelnen DokumentsQueue trigger, write one doc
  • Warteschlangentrigger: Schreiben von Dokumenten unter Verwendung von „IAsyncCollector“Queue trigger, write docs using IAsyncCollector

Ausgabebeispiele überspringenSkip output examples

Warteschlangentrigger: Schreiben eines einzelnen Dokuments (C#-Skript)Queue trigger, write one doc (C# script)

Das folgende Beispiel zeigt eine Azure Cosmos DB-Ausgabebindung in einer function.json-Datei sowie eine C#-Skriptfunktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB output binding in a function.json file and a C# script function that uses the binding. Die Funktion verwendet eine Warteschlangeneingabebindung für eine Warteschlange, die JSON-Code im folgenden Format empfängt: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"
}

Die Funktion erstellt Azure Cosmos DB-Dokumente im folgenden Format für die einzelnen Datensätze: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"
}

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der C#-Skriptcode sieht wie folgt aus: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
      };
    }

Warteschlangentrigger: Schreiben von Dokumenten unter Verwendung von „IAsyncCollector“Queue trigger, write docs using IAsyncCollector

Für das Erstellen mehrerer Dokumente können Sie eine Bindung mit ICollector<T> oder IAsyncCollector<T> erstellen, wobei T einer der unterstützten Typen ist.To create multiple documents, you can bind to ICollector<T> or IAsyncCollector<T> where T is one of the supported types.

Dieses Beispiel bezieht sich auf einen einfachen ToDoItem-Typ:This example refers to a simple ToDoItem type:

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

Die Datei „function.json“ sieht wie folgt aus: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
}

Der C#-Skriptcode sieht wie folgt aus: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);
    }
}

Ausgabebeispiele überspringenSkip output examples

Ausgabe: JavaScript-BeispieleOutput - JavaScript examples

Das folgende Beispiel zeigt eine Azure Cosmos DB-Ausgabebindung in einer function.json-Datei sowie eine JavaScript-Funktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB output binding in a function.json file and a JavaScript function that uses the binding. Die Funktion verwendet eine Warteschlangeneingabebindung für eine Warteschlange, die JSON-Code im folgenden Format empfängt: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"
}

Die Funktion erstellt Azure Cosmos DB-Dokumente im folgenden Format für die einzelnen Datensätze: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"
}

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der JavaScript-Code sieht wie folgt aus: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();
    };

Ausgabebeispiele überspringenSkip output examples

Ausgabe: F#-BeispieleOutput - F# examples

Das folgende Beispiel zeigt eine Azure Cosmos DB-Ausgabebindung in einer function.json-Datei sowie eine F#-Funktion, die die Bindung verwendet.The following example shows an Azure Cosmos DB output binding in a function.json file and an F# function that uses the binding. Die Funktion verwendet eine Warteschlangeneingabebindung für eine Warteschlange, die JSON-Code im folgenden Format empfängt: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"
}

Die Funktion erstellt Azure Cosmos DB-Dokumente im folgenden Format für die einzelnen Datensätze: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"
}

Bindungsdaten in der Datei function.json: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"
}

Weitere Informationen zu diesen Eigenschaften finden Sie im Abschnitt Konfiguration.The configuration section explains these properties.

Der F#-Code lautet wie folgt: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 }

Dieses Beispiel erfordert die Datei project.json, die die NuGet-Abhängigkeiten FSharp.Interop.Dynamic und Dynamitey angibt: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"
           }
        }
    }
}

Informationen zum Hinzufügen einer project.json-Datei finden Sie unter Paketverwaltung.To add a project.json file, see F# package management.

Ausgabe: Java-BeispieleOutput - Java examples

Warteschlangentrigger: Speichern einer Nachricht in einer Datenbank über den Rückgabewert (Java)Queue trigger, save message to database via return value (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die einer Datenbank ein Dokument hinzufügt und dazu die Daten aus der Meldung in Queue Storage verwendet.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 + " }";
   }

HTTP-Trigger: Speichern eines Dokuments in einer Datenbank über den Rückgabewert (Java)HTTP trigger, save one document to database via return value (Java)

Das folgende Beispiel zeigt eine Java-Funktion, deren Signatur mit @CosmosDBOutput kommentiert ist und einen Rückgabewert des Typs String besitzt.The following example shows a Java function whose signature is annotated with @CosmosDBOutput and has return value of type String. Das von der Funktion zurückgegebene JSON-Dokument wird automatisch in die entsprechende COSMOS CosmosDB-Sammlung geschrieben.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;
    }

HTTP-Trigger: Speichern eines Dokuments in einer Datenbank über OutputBinding (Java)HTTP trigger, save one document to database via OutputBinding (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die ein Dokument über einen OutputBinding<T>-Ausgabeparameter in CosmosDB schreibt.The following example shows a Java function that writes a document to CosmosDB via an OutputBinding<T> output parameter. Beachten Sie, dass es in diesem Setup der Parameter outputItem ist, der mit @CosmosDBOutput kommentiert sein muss, nicht die Funktionssignatur.Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. Durch die Verwendung von OutputBinding<T> kann Ihre Funktion die Bindung nutzen, um das Dokument in CosmosDB zu schreiben, und gleichzeitig einen anderen Wert an den Funktionsaufrufer zurückgeben, z. B. ein JSON- oder XML-Dokument.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();
    }

HTTP-Trigger: Speichern mehrerer Dokumente in einer Datenbank über OutputBinding (Java)HTTP trigger, save multiple documents to database via OutputBinding (Java)

Das folgende Beispiel zeigt eine Java-Funktion, die mehrere Dokumente über einen OutputBinding<T>-Ausgabeparameter in CosmosDB schreibt.The following example shows a Java function that writes multiple documents to CosmosDB via an OutputBinding<T> output parameter. Beachten Sie, dass es in diesem Setup der Parameter outputItem ist, der mit @CosmosDBOutput kommentiert sein muss, nicht die Funktionssignatur.Note that, in this setup, it is the outputItem parameter that needs to be annotated with @CosmosDBOutput, not the function signature. Der Ausgabeparameter outputItem enthält eine Liste von ToDoItem-Objekten als deren Vorlagenparametertyp.The output parameter, outputItem has a list of ToDoItem objects as its template parameter type. Durch die Verwendung von OutputBinding<T> kann Ihre Funktion die Bindung nutzen, um die Dokumente in CosmosDB zu schreiben, und gleichzeitig einen anderen Wert an den Funktionsaufrufer zurückgeben, z. B. ein JSON- oder XML-Dokument.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();
    }

Verwenden Sie die @CosmosDBOutput-Anmerkung in der Laufzeitbibliothek für Java-Funktionen für Parameter, die in Cosmos DB geschrieben werden.In the Java functions runtime library, use the @CosmosDBOutput annotation on parameters that will be written to Cosmos DB. Der Parametertyp der Anmerkung muss OutputBinding<T> sein, wobei „T“ ein nativer Java-Typ oder ein POJO ist.The annotation parameter type should be OutputBinding<T>, where T is either a native Java type or a POJO.

Ausgabe: Beispiele für PythonOutput - Python examples

Im folgenden Beispiel wird veranschaulicht, wie ein Dokument als Ausgabe einer Funktion in eine Azure CosmosDB-Datenbank geschrieben wird.The following example demonstrates how to write a document to an Azure CosmosDB database as the output of a function.

Die Bindungsdefinition ist in function.json definiert, wobei type auf cosmosDB festgelegt ist.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"
    }
  ]
}

Um in die Datenbank zu schreiben, übergeben Sie ein Dokumentobjekt an die set-Methode des Parameters „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'

Ausgabe: AttributeOutput - attributes

Verwenden Sie in C#-Klassenbibliotheken das Attribut CosmosDB.In C# class libraries, use the CosmosDB attribute.

Der Attributkonstruktor akzeptiert den Datenbanknamen und den Sammlungsnamen.The attribute's constructor takes the database name and collection name. Weitere Informationen zu diesen Einstellungen und anderen Eigenschaften, die Sie konfigurieren können, finden Sie unter Ausgabe: Konfiguration.For information about those settings and other properties that you can configure, see Output - configuration. Hier ist ein Beispiel für ein CosmosDB-Attribut in einer Methodensignatur: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)
    {
        ...
    }

Ein vollständiges Beispiel finden Sie unter „Ausgabe: C#-Beispiel“.For a complete example, see Output - C# example.

Ausgabe: KonfigurationOutput - configuration

Die folgende Tabelle gibt Aufschluss über die Bindungskonfigurationseigenschaften, die Sie in der Datei function.json und im Attribut CosmosDB festlegen:The following table explains the binding configuration properties that you set in the function.json file and the CosmosDB attribute.

Eigenschaft von „function.json“function.json property AttributeigenschaftAttribute property BESCHREIBUNGDescription
typetype Muss auf cosmosDB festgelegt sein.Must be set to cosmosDB.
directiondirection Muss auf out festgelegt sein.Must be set to out.
namename Der Name des Bindungsparameters, der das Dokument in der Funktion darstelltName of the binding parameter that represents the document in the function.
databaseNamedatabaseName DatabaseNameDatabaseName Die Datenbank mit der Sammlung, in der das neue Dokument erstellt wirdThe database containing the collection where the document is created.
collectionNamecollectionName CollectionNameCollectionName Der Name der Sammlung, in der das neue Dokument erstellt wirdThe name of the collection where the document is created.
createIfNotExistscreateIfNotExists CreateIfNotExistsCreateIfNotExists Ein boolescher Wert, der angibt, ob die Sammlung erstellt werden soll, wenn sie nicht vorhanden ist.A boolean value to indicate whether the collection is created when it doesn't exist. Der Standardwert ist FALSE, da neue Sammlungen mit reserviertem Durchsatz erstellt werden. Dies wirkt sich auf die Kosten aus.The default is false because new collections are created with reserved throughput, which has cost implications. Weitere Informationen hierzu finden Sie in der Preisübersicht.For more information, see the pricing page.
partitionKeypartitionKey PartitionKeyPartitionKey Wenn CreateIfNotExists den Wert „TRUE“ hat, wird der Partitionsschlüsselpfad für die erstellte Sammlung definiert.When CreateIfNotExists is true, defines the partition key path for the created collection.
collectionThroughputcollectionThroughput CollectionThroughputCollectionThroughput Wenn CreateIfNotExists den Wert „TRUE“ hat, wird der Durchsatz für die erstellte Sammlung definiert.When CreateIfNotExists is true, defines the throughput of the created collection.
connectionStringSettingconnectionStringSetting ConnectionStringSettingConnectionStringSetting Der Name der App-Einstellung mit Ihrer Azure Cosmos DB-Verbindungszeichenfolge.The name of the app setting containing your Azure Cosmos DB connection string.

Wenn Sie lokal entwickeln, werden App-Einstellungen in der Datei „local.settings.json“ gespeichert.When you're developing locally, app settings go into the local.settings.json file.

Ausgabe: VerwendungOutput - usage

Standardmäßig wird beim Schreiben in den Ausgabeparameter in Ihrer Funktion ein Dokument in der Datenbank erstellt.By default, when you write to the output parameter in your function, a document is created in your database. Dieses Dokument besitzt eine automatisch generierte GUID als Dokument-ID.This document has an automatically generated GUID as the document ID. Sie können die Dokument-ID des Ausgabedokuments angeben, indem Sie die id-Eigenschaft im JSON-Objekt angeben, das an den Ausgabeparameter übergeben wird.You can specify the document ID of the output document by specifying the id property in the JSON object passed to the output parameter.

Hinweis

Wenn Sie die ID eines vorhandenen Dokuments angeben, wird dieses vom neuen Ausgabedokument überschrieben.When you specify the ID of an existing document, it gets overwritten by the new output document.

Ausnahmen und RückgabecodesExceptions and return codes

BindungBinding VerweisReference
CosmosDBCosmosDB CosmosDB-FehlercodesCosmosDB Error Codes

Einstellungen für „host.json“host.json settings

In diesem Abschnitt werden die verfügbaren globalen Konfigurationseinstellungen für diese Bindung in Version 2.x beschrieben.This section describes the global configuration settings available for this binding in version 2.x. Weitere Informationen zu globalen Konfigurationseinstellungen in Version 2.x finden Sie unter host.json-Referenz für Azure Functions 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"
            }
        }
    }
}
EigenschaftProperty StandardDefault BESCHREIBUNGDescription
GatewayModeGatewayMode GatewayGateway Der von der Funktion zum Herstellen von Verbindungen mit dem Azure Cosmos DB-Dienst verwendete Verbindungsmodus.The connection mode used by the function when connecting to the Azure Cosmos DB service. Die Optionen sind Direct und Gateway.Options are Direct and Gateway
ProtocolProtocol HTTPSHttps Das von der Funktion zum Herstellen von Verbindungen mit dem Azure Cosmos DB-Dienst verwendete Verbindungsprotokoll.The connection protocol used by the function when connection to the Azure Cosmos DB service. Hier finden Sie eine Erläuterung der beiden ModiRead here for an explanation of both modes
leasePrefixleasePrefix n/a Lease-Präfix, das durchgängig für alle Funktionen in einer App verwendet wird.Lease prefix to use across all functions in an app.

Nächste SchritteNext steps