Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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-Ausgabebindung ermöglicht es Ihnen, neue Dokumente aus Ihren Azure Functions in eine Azure DocumentDB-Sammlung zu schreiben. Dieser Artikel erklärt, wie man die Ausgabe-Bindung konfiguriert und verwendet, einschließlich Codebeispielen zum Schreiben von Dokumenten in Ihre Datenbank.
Voraussetzungen
Ein Azure-Abonnement
- Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto
Ein vorhandener Azure DocumentDB-Cluster
- Wenn Sie keinen Cluster haben, erstellen Sie einen neuen Cluster.
Azure Functions .NET 8.0-Projekt unter Verwendung des Legacy-In-Process Worker-Modells
Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.MongoNuGet-Paket
Example
Dieses Beispiel zeigt eine HTTP-Triggerfunktion für eine HTTP-Anfrage POST . Die Anfrage erhält eine erwartete Meldung string im Antragskörper. Dann fügt die Ausgabebindung ein Dokument zur Sammlung hinzu.
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using MongoDB.Bson;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Mvc;
public static class DocumentDBOutput
{
[FunctionName(nameof(DocumentDBOutput))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "POST", Route = null)]
string payload,
[CosmosDBMongo(databaseName: "<database-name>",
collectionName: "<collection-name>",
ConnectionStringSetting = "<name-of-app-setting>")]
IAsyncCollector<BsonDocument> collector,
ILogger logger)
{
logger.LogInformation("C# Azure DocumentDB output function starting.");
BsonDocument document = new()
{
{ "message", payload },
{ "originator", nameof(DocumentDBOutput) },
{ "timestamp", BsonDateTime.Create(System.DateTime.UtcNow) }
};
await collector.AddAsync(document);
return new OkObjectResult("Document added successfully.");
}
}
Alternativ kann man einen C#-Datensatz oder Klassentyp verwenden, um Dokumente darzustellen, die zur Sammlung hinzugefügt werden:
using Microsoft.Azure.WebJobs;
using Microsoft.Extensions.Logging;
using Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo;
using MongoDB.Bson;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Mvc;
using MongoDB.Bson.Serialization.Attributes;
public static class DocumentDBOutput
{
[FunctionName(nameof(DocumentDBOutput))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "POST", Route = null)]
ProductDocument payload,
[CosmosDBMongo(databaseName: "<database-name>",
collectionName: "<collection-name>",
ConnectionStringSetting = "<name-of-app-setting>")]
IAsyncCollector<ProductDocument> collector,
ILogger logger)
{
logger.LogInformation("C# Azure DocumentDB output function starting.");
await collector.AddAsync(payload);
return new OkObjectResult("Document added successfully.");
}
}
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 |
Der Name der Datenbank, die für die Ausgabedaten angerichtet ist. |
CollectionName |
Der Name der Sammlung in der für die Ausgabedaten angerichteten Datenbank. |
ConnectionStringSetting |
Der Name einer App-Einstellung oder Einstellungssammlung, die angibt, wie man sich mit dem Azure DocumentDB-Cluster verbindet, der für die Ausgabedaten vorgesehen ist. |
CreateIfNotExists |
(Optional) Wenn auf gesetzt truewird, entsteht die Zielsammlung, falls sie noch nicht existiert. |
Usage
Verwenden Sie das Attribut, CosmosDBMongo um eine Sammlung von Dokumenten in eine Sammlung einzufügen, die möglicherweise nicht existiert:
[FunctionName(nameof(DocumentDBOutput))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "POST", Route = null)]
BsonDocument payload,
[CosmosDBMongo(databaseName: "<database-name>",
collectionName: "products",
ConnectionStringSetting = "<name-of-app-setting>",
CreateIfNotExists = true)]
IAsyncCollector<BsonDocument> collector,
ILogger logger)
{
logger.LogInformation("C# Azure DocumentDB output function starting.");
await collector.AddAsync(payload);
return new OkObjectResult("Document added successfully.");
}
Alternativ arbeiten Sie direkt mit dem MongoDB-Client in Ihrem Funktionscode:
[FunctionName(nameof(DocumentDBOutput))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "POST", Route = null)]
BsonDocument payload,
[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>");
await collection.InsertOneAsync(payload);
return new OkObjectResult("Document added successfully.");
}