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
- Een Azure-account met een actief abonnement. Gratis een account maken
- Een GitHub-account
- Een Azure-account met een actief abonnement. Gratis een account maken
- Azure Developer CLI
- Docker Desktop
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.
Belangrijk
GitHub-accounts bevatten gratis rechten voor opslag en kernuren. Zie inbegrepen opslag- en kernuren voor GitHub-accounts voor meer informatie.
Open een terminal in de hoofdmap van het project.
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
Gebruik
azd init
dit om het project te initialiseren.azd init --template cosmos-db-mongodb-dotnet-quickstart
Notitie
Deze quickstart maakt gebruik van de GitHub-sjabloonsjabloon azure-samples/cosmos-db-mongodb-dotnet-quickstart . De Azure Developer CLI kloont dit project automatisch naar uw computer als dit nog niet is gebeurd.
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
Implementeer het Azure Cosmos DB-account met behulp van
azd up
. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.azd up
Selecteer tijdens het inrichtingsproces uw abonnement en gewenste locatie. Wacht tot het inrichtingsproces is voltooid. Het proces kan ongeveer vijf minuten duren.
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.
Gebruik de URL in de console om naar uw webtoepassing in de browser te navigeren. Bekijk de uitvoer van de actieve app.
De clientbibliotheek installeren
De clientbibliotheek is beschikbaar via NuGet, als pakket Microsoft.Azure.Cosmos
.
Open een terminal en navigeer naar de
/src/web
map.cd ./src/web
Als dit nog niet is geïnstalleerd, installeert u het
MongoDb.Driver
pakket met behulp vandotnet add package
.dotnet add package MongoDb.Driver
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.
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 client verifiëren
- Een database maken
- Een container maken
- Een item maken
- Een item ophalen
- Query's uitvoeren op items
De voorbeeldcode die in dit artikel wordt gedemonstreerd, maakt een database met de naam adventureworks
products
een 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 IQueryable
te 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 uitgevoerde stappen.
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