Freigeben über


Azure DocumentDB input binding for Azure Functions

Von Bedeutung

Die Azure DocumentDB-Erweiterung befindet sich derzeit in der Vorschau. Derzeit werden nur .NET-Apps unterstützt, die das Legacy-In-Process-Modell verwenden.

Die Azure DocumentDB-Eingabebindung in Azure Functions ermöglicht es Ihnen, ein oder mehrere Dokumente aus Ihrer Datenbank abzurufen. Dieser Artikel erklärt, wie man die Eingabebindung mit C#-Codebeispielen konfiguriert und verwendet, einschließlich Abfragen von Sammlungen und der Arbeit mit dem MongoDB-Client.

Voraussetzungen

Example

Dieses Beispiel zeigt eine HTTP-Triggerfunktion für eine HTTP-Anfrage GET . Die Funktion verwendet dann eine Eingabebindung, um die Ziel-Azure DocumentDB-Sammlung nach Dokumenten abzusuchen, die dem Filter { "price": { "$gte": 150 }}entsprechen:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using System.Collections.Generic;
using MongoDB.Bson;

public static class DocumentDBInput
{
    [FunctionName(nameof(DocumentDBInput))]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "GET", Route = null)]
        HttpRequest request,
        [CosmosDBMongo(databaseName: "<database-name>",
                        collectionName: "<collection-name>",
                        ConnectionStringSetting = "<name-of-app-setting>",
                        QueryString = "{{ \"price\": {{ \"$gte\": 150 }} }}")]
        IEnumerable<BsonDocument> documents,
        ILogger logger)
    {
        logger.LogInformation("C# Azure DocumentDB function queried a collection.");

        return new OkObjectResult(documents);
    }
}

Alternativ kann man einen C#-Datensatz oder Klassentyp verwenden, um Dokumente darzustellen, die aus der Sammlung zurückgegeben werden:

using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using System.Collections.Generic;
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;

public static class DocumentDBInput
{
    [FunctionName(nameof(DocumentDBInput))]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "GET", Route = null)]
        HttpRequest request,
        [CosmosDBMongo(databaseName: "<database-name>",
                        collectionName: "<collection-name>",
                        ConnectionStringSetting = "<name-of-app-setting>",
                        QueryString = "{{ \"price\": {{ \"$gte\": 150 }} }}")]
        IEnumerable<ProductDocument> products,
        ILogger logger)
    {
        logger.LogInformation("C# Azure DocumentDB function queried a collection.");

        return new OkObjectResult(products);
    }
}

public sealed record ProductDocument(
    [property: BsonId]
    [property: BsonRepresentation(BsonType.ObjectId)] string id,
    string name,
    string category,
    int quantity,
    decimal price,
    bool sale
);

Attribute

Diese Tabelle beschreibt die Bindungskonfigurationseigenschaften des Attributs CosmosDBMongoTrigger .

Parameter Description
FunctionId (Optional) Die ID der Auslöserfunktion.
DatabaseName (Optional) Der Name der Datenbank, die von der Eingabe angesprochen wird.
CollectionName (Optional) Der Name der Sammlung in der von der Eingabe anvisierten Datenbank.
ConnectionStringSetting Der Name einer App-Einstellung oder Einstellungssammlung, die angibt, wie man sich mit dem Azure DocumentDB-Cluster verbindet.
QueryString Definiert den Mongo-Abfrageausdruck, der von der Eingabebindung verwendet wird, und gibt Dokumente aus der Datenbank zurück. Die Abfrage unterstützt Azure Functions-Bindungsparameter.

Hinweis

Der Parameter QueryString muss mit doppelten geschwungenen Klammern escaped werden, um die integrierte Parameterbindung von Azure Function zu berücksichtigen. Weitere Informationen finden Sie unter Bindungsausdrücke und -muster.

Usage

Verwenden Sie das Attribut CosmosDBMongo , um eine Reihe von Dokumenten aus der Sammlung abzurufen:

[FunctionName(nameof(DocumentDBInput))]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "GET", Route = null)]
    HttpRequest request,
    [CosmosDBMongo(databaseName: "<database-name>",
                    collectionName: "<collection-name>",
                    ConnectionStringSetting = "<name-of-app-setting>")]
    IEnumerable<BsonDocument> documents,
    ILogger logger)
{
    logger.LogInformation("C# Azure DocumentDB function queried a collection.");

    return new OkObjectResult(documents);
}

Alternativ arbeiten Sie direkt mit dem MongoDB-Client in Ihrem Funktionscode:

[FunctionName(nameof(DocumentDBInput))]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Function, "GET", Route = null)]
    HttpRequest request,
    [CosmosDBMongo(ConnectionStringSetting = "<name-of-app-setting>")]
    IMongoClient client,
    ILogger logger)
{
    logger.LogInformation("C# Azure DocumentDB function got a client.");

    IMongoDatabase database = client.GetDatabase("<database-name>");

    IMongoCollection<BsonDocument> collection = database.GetCollection<BsonDocument>("<collection-name>");

    BsonDocument filter = []; // Empty filter to get all documents

    long count = await collection.CountDocumentsAsync(filter);

    return new OkObjectResult(new
    {
        documentsInCollection = count
    });
}