Delen via


Quickstart: Azure Cosmos DB voor MongoDB voor .NET met het MongoDB-stuurprogramma

VAN TOEPASSING OP: MongoDB

Ga aan de slag met MongoDB om databases, verzamelingen en documenten te maken in uw Azure Cosmos DB-resource. Volg deze stappen om een minimale oplossing in uw omgeving te implementeren met behulp van de Azure Developer CLI.

Api voor MongoDB-referentiedocumentatie | MongoDB-pakketpakketten (NuGet) /Microsoft.Azure.Cosmos) | Azure Developer CLI

Vereisten

Instellen

Implementeer de ontwikkelcontainer van dit project in uw omgeving. Gebruik vervolgens de Azure Developer CLI (azd) om een Azure Cosmos DB voor MongoDB-account te maken en een containervoorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.

Openen in GitHub Codespaces

Openen in Dev-container

Belangrijk

GitHub-accounts bevatten gratis rechten voor opslag en kernuren. Zie inbegrepen opslag- en kernuren voor GitHub-accounts voor meer informatie.

  1. Open een terminal in de hoofdmap van het project.

  2. Verifiëren bij de Azure Developer CLI met behulp van azd auth login. Volg de stappen die door het hulpprogramma zijn opgegeven om te verifiëren bij de CLI met behulp van uw favoriete Azure-referenties.

    azd auth login
    
  3. Gebruik azd init dit om het project te initialiseren.

    azd init
    
  4. Configureer tijdens de initialisatie een unieke omgevingsnaam.

    Tip

    De omgevingsnaam wordt ook gebruikt als de naam van de doelresourcegroep. Voor deze quickstart kunt u overwegen .msdocs-cosmos-db

  5. Implementeer het Azure Cosmos DB-account met behulp van azd up. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.

    azd up
    
  6. Selecteer tijdens het inrichtingsproces uw abonnement en gewenste locatie. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.

  7. Zodra het inrichten van uw Azure-resources is voltooid, wordt er een URL naar de actieve webtoepassing opgenomen in de uitvoer.

    Deploying services (azd deploy)
    
      (✓) Done: Deploying service web
    - Endpoint: <https://[container-app-sub-domain].azurecontainerapps.io>
    
    SUCCESS: Your application was provisioned and deployed to Azure in 5 minutes 0 seconds.
    
  8. Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.

    Schermopname van de actieve webtoepassing.


De clientbibliotheek installeren

De clientbibliotheek is beschikbaar via NuGet, als pakket Microsoft.Azure.Cosmos .

  1. Open een terminal en navigeer naar de /src/web map.

    cd ./src/web
    
  2. Als dit nog niet is geïnstalleerd, installeert u het MongoDb.Driver pakket met behulp van dotnet add package.

    dotnet add package MongoDb.Driver
    
  3. Installeer ook het Azure.Identity pakket als dat nog niet is geïnstalleerd.

    dotnet add package Azure.Identity
    

Objectmodel

Voordat u begint met het bouwen van de toepassing, gaan we kijken naar de hiërarchie van resources in Azure Cosmos DB. Azure Cosmos DB heeft een specifiek objectmodel dat wordt gebruikt voor het maken en openen van resources. Azure Cosmos DB maakt resources in een hiërarchie die bestaat uit accounts, databases, verzamelingen en documenten.

Diagram van de Azure Cosmos DB-hiërarchie, waaronder accounts, databases, verzamelingen en documenten.

Hiërarchisch diagram met een Azure Cosmos DB-account bovenaan. Het account heeft twee onderliggende database-shards. Een van de database-shards bevat twee onderliggende verzamelings-shards. De andere database-shard bevat één onderliggende verzamelingshard. Die enkele verzamelingsshard heeft drie onderliggende doc-shards.

U gebruikt de volgende MongoDB-klassen om te communiceren met deze resources:

  • MongoClient - Deze klasse biedt een logische weergave aan de clientzijde voor de API voor MongoDB-laag in Azure Cosmos DB. Het clientobject wordt gebruikt om aanvragen aan de service te configureren en uitvoeren.
  • MongoDatabase - Deze klasse is een verwijzing naar een database die al dan niet bestaat in de service. De database wordt gevalideerd aan de serverzijde wanneer u deze probeert te openen of een bewerking uitvoert.
  • Collection - Deze klasse is een verwijzing naar een verzameling die mogelijk nog niet bestaat in de service. De verzameling wordt gevalideerd aan de serverzijde wanneer u ermee probeert te werken.

Codevoorbeelden

De voorbeeldcode die in dit artikel wordt gedemonstreerd, maakt een database met de naam adventureworksproductseen verzameling. De products verzameling is ontworpen om productdetails te bevatten, zoals naam, categorie, hoeveelheid en een verkoopindicator. Elk product bevat ook een unieke id.

De client verifiëren

Open het Program.cs bestand vanuit de projectmap. Voeg in uw editor een using-instructie toe voor MongoDB.Driver.

using MongoDB.Driver;

Definieer een nieuw exemplaar van de MongoClient klasse met behulp van de constructor en Environment.GetEnvironmentVariable lees de verbindingsreeks die eerder zijn ingesteld door de Azure Developer CLI.

// New instance of CosmosClient class
var client = new MongoClient(Environment.GetEnvironmentVariable("MONGO_CONNECTION"));

Een -database maken

Gebruik de MongoClient.GetDatabase methode om een nieuwe database te maken als deze nog niet bestaat. Deze methode retourneert een verwijzing naar de bestaande of zojuist gemaakte database.

// Database reference with creation if it does not already exist
var db = client.GetDatabase("adventure");

Een verzameling maken

Er MongoDatabase.GetCollection wordt een nieuwe verzameling gemaakt als deze nog niet bestaat en een verwijzing naar de verzameling retourneert.

// Container reference with creation if it does not alredy exist
var _products = db.GetCollection<Product>("products");

Een item maken

De eenvoudigste manier om een nieuw item in een verzameling te maken, is door een C# -klasse of recordtype te maken met alle leden die u in JSON wilt serialiseren. In dit voorbeeld heeft de C#-record een unieke id, een categorieveld voor de partitiesleutel en extra naam, hoeveelheid en verkoopvelden .

public record Product(
    string Id,
    string Category,
    string Name,
    int Quantity,
    bool Sale
);

Maak een item in de verzameling met behulp van de Product record door aan te roepen IMongoCollection<TDocument>.InsertOne.

// Create new object and upsert (create or replace) to container
_products.InsertOne(new Product(
    Guid.NewGuid().ToString(),
    "gear-surf-surfboards",
    "Yamba Surfboard", 
    12, 
    false
));

Een item ophalen

In Azure Cosmos DB kunt u items ophalen door query's op te stellen met behulp van Linq. Roep in de SDK IMongoCollection.FindAsync<> een C#-expressie aan en geef deze door om de resultaten te filteren.

// Read a single item from container
var product = (await _products.FindAsync(p => p.Name.Contains("Yamba"))).FirstOrDefault();
Console.WriteLine("Single product:");
Console.WriteLine(product.Name);

Query-items

Nadat u een item hebt ingevoegd, kunt u een query uitvoeren om alle items op te halen die overeenkomen met een specifiek filter door de verzameling als een IQueryablete behandelen. In dit voorbeeld wordt een expressie gebruikt om producten te filteren op categorie. Zodra de aanroep AsQueryable is gedaan, roept MongoQueryable.Where u aan om een set gefilterde items op te halen.

// Read multiple items from container
_products.InsertOne(new Product(
    Guid.NewGuid().ToString(),
    "gear-surf-surfboards",
    "Sand Surfboard",
    4,
    false
));

var products = _products.AsQueryable().Where(p => p.Category == "gear-surf-surfboards");

Console.WriteLine("Multiple products:");
foreach (var prod in products)
{
    Console.WriteLine(prod.Name);
}

De code uitvoeren

Met deze app maakt u een Azure Cosmos DB MongoDb API-database en -verzameling. In het voorbeeld wordt vervolgens een item gemaakt en wordt precies hetzelfde item teruggelezen. Ten slotte maakt het voorbeeld een tweede item en voert vervolgens een query uit die meerdere items moet retourneren. Bij elke stap voert het voorbeeld metagegevens uit naar de console over de stappen die deze heeft uitgevoerd.

Als u de app wilt uitvoeren, gebruikt u een terminal om naar de toepassingsmap te navigeren en de toepassing uit te voeren.

dotnet run

De uitvoer van de app moet er ongeveer uitzien als in dit voorbeeld:

Single product name: 
Yamba Surfboard
Multiple products:
Yamba Surfboard
Sand Surfboard

Resources opschonen

Wanneer u het Azure Cosmos DB for MongoDB-account niet meer nodig hebt, kunt u de bijbehorende resourcegroep verwijderen.

Gebruik de az group delete opdracht om de resourcegroep te verwijderen.

az group delete --name $resourceGroupName