Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart implementeert u een eenvoudige Azure Cosmos DB voor MongoDB vCore-toepassing met behulp van .NET. Azure Cosmos DB voor MongoDB vCore is een schemaloos gegevensarchief waarmee toepassingen ongestructureerde documenten kunnen opslaan in de cloud met MongoDB-bibliotheken. U leert hoe u documenten maakt en basistaken uitvoert in uw Azure Cosmos DB-resource met behulp van .NET.
Broncode van bibliotheek | Package (NuGet) | Azure Developer CLI
Vereiste voorwaarden
Azure-ontwikkelaars-CLI
Docker Desktop
Een Azure-abonnement
- Als je geen Azure-abonnement hebt, maak dan een gratis account aan voordat je begint.
- .NET SDK 9.0
Het project initialiseren
Gebruik de Azure Developer CLI (azd) om een Azure Cosmos DB voor MongoDB vCore-cluster te maken en een in een container geplaatste voorbeeldtoepassing te implementeren. De voorbeeldtoepassing maakt gebruik van de clientbibliotheek voor het beheren, maken, lezen en opvragen van voorbeeldgegevens.
Open een terminal in een lege map.
Als u nog niet bent geverifieerd, moet u zich 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 loginGebruik
azd initom het project te initialiseren.azd init --template cosmos-db-mongodb-vcore-dotnet-quickstartConfigureer tijdens de initialisatie een unieke omgevingsnaam.
Implementeer het cluster met behulp van
azd up. De Bicep-sjablonen implementeren ook een voorbeeldwebtoepassing.azd upSelecteer tijdens het inrichtingsproces uw abonnement, gewenste locatie en doelresourcegroep. Wacht tot het provisioningproces 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 MongoDB.Driver . Voor Microsoft Entra-verificatie gebruikt u het Azure.Identity pakket van de Azure SDK voor .NET.
Open een terminal en navigeer naar de
/src/webmap.cd ./src/webAls dit nog niet is geïnstalleerd, installeert u het
MongoDB.Driverpakket met behulp vandotnet add package.dotnet add package MongoDB.DriverAls dit nog niet is geïnstalleerd, installeert u het
Azure.Identitypakket.dotnet add package Azure.IdentityOpen en controleer het bestand src/api/Microsoft.Learn.AzureCosmosDBMongoDBQuickstart.Api.csproj om te controleren of beide pakketvermeldingen bestaan.
Bibliotheken importeren
Importeer de volgende naamruimten in uw toepassingscode:
| Pakket | Bron | |
|---|---|---|
Azure.Core |
Azure.Identity |
Azure-SDK voor .NET |
Azure.Identity |
Azure.Identity |
Azure-SDK voor .NET |
MongoDB.Driver |
MongoDB.Driver |
Officieel MongoDB-stuurprogramma voor .NET |
MongoDB.Driver.Authentication.Oidc |
MongoDB.Driver |
Officieel MongoDB-stuurprogramma voor .NET |
using Azure.Core;
using Azure.Identity;
using MongoDB.Driver;
using MongoDB.Driver.Authentication.Oidc;
Objectmodel
| Naam | Beschrijving |
|---|---|
MongoClient |
Type dat wordt gebruikt om verbinding te maken met MongoDB. |
Database |
Vertegenwoordigt een database in het cluster. |
Collection |
Vertegenwoordigt een verzameling in een database op het cluster. |
Codevoorbeelden
- De client verifiëren
- Een database ophalen
- Een verzameling verkrijgen
- Een document maken
- Een document ophalen
- Documenten opvragen
- Een document verwijderen
De voorbeeldcode in de sjabloon maakt gebruik van een database met de naam cosmicworks en verzameling.products De products verzameling bevat details zoals naam, categorie, hoeveelheid en een unieke id voor elk product. De verzameling gebruikt de /category eigenschap als een shard key.
De client verifiëren
Hoewel Microsoft Entra-verificatie voor Azure Cosmos DB voor MongoDB vCore bekende TokenCredential typen kan gebruiken, moet u een aangepaste tokenhandler implementeren. Deze voorbeeldimplementatie kan worden gebruikt om een MongoClient met ondersteuning voor standaard Microsoft Entra-verificatie voor veel verschillende identiteitstypen te maken.
Maak eerst een nieuwe klasse in een afzonderlijk bestand dat interface implementeert
IOidcCallback.using Azure.Core; using MongoDB.Driver.Authentication.Oidc; internal sealed class AzureIdentityTokenHandler( TokenCredential credential, string tenantId ) : IOidcCallback { private readonly string[] scopes = ["https://ossrdbms-aad.database.windows.net/.default"]; public OidcAccessToken GetOidcAccessToken(OidcCallbackParameters parameters, CancellationToken cancellationToken) { AccessToken token = credential.GetToken( new TokenRequestContext(scopes, tenantId: tenantId), cancellationToken ); return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow); } public async Task<OidcAccessToken> GetOidcAccessTokenAsync(OidcCallbackParameters parameters, CancellationToken cancellationToken) { AccessToken token = await credential.GetTokenAsync( new TokenRequestContext(scopes, parentRequestId: null, tenantId: tenantId), cancellationToken ); return new OidcAccessToken(token.Token, token.ExpiresOn - DateTimeOffset.UtcNow); } }Maak een nieuw exemplaar van uw aangepaste handlerklasse die een nieuw exemplaar van het
DefaultAzureCredentialtype en uw tenant-id doorgeeft.DefaultAzureCredential credential = new(); string tenantId = "<microsoft-entra-tenant-id>"; AzureIdentityTokenHandler tokenHandler = new(credential, tenantId);Maak een exemplaar van
MongoUrlmet behulp van het eindpunt en het schema voor uw onlangs geïmplementeerde Azure Cosmos DB voor MongoDB vCore-instantie.string clusterName = "<azure-cosmos-db-mongodb-vcore-cluster-name>"; MongoUrl url = MongoUrl.Create($"mongodb+srv://{clusterName}.global.mongocluster.cosmos.azure.com/");Configureer uw
MongoClientexemplaar met behulp van bekende best practice-configuratieopties voor Azure Cosmos DB voor MongoDB vCore en de aangepasteIOidcCallbackimplementatie.MongoClientSettings settings = MongoClientSettings.FromUrl(url); settings.UseTls = true; settings.RetryWrites = false; settings.MaxConnectionIdleTime = TimeSpan.FromMinutes(2); settings.Credential = MongoCredential.CreateOidcCredential(tokenHandler); settings.Freeze(); MongoClient client = new(settings);
Een database ophalen
In dit voorbeeld wordt een exemplaar van de IMongoDatabase interface gemaakt met behulp van de GetDatabase methode van de MongoClient klasse.
IMongoDatabase database = client.GetDatabase("<database-name>");
Een verzameling ophalen
In dit voorbeeld wordt een exemplaar van de algemene IMongoCollection<> interface gemaakt met behulp van de GetCollection<> algemene methode van de IMongoDatabase interface. De algemene interface en methode gebruiken allebei een type genaamd Product, dat is gedefinieerd in een andere klasse.
IMongoCollection<Product> collection = database.GetCollection<Product>("<collection-name>");
public record Product(
string id,
string category,
string name,
int quantity,
decimal price,
bool clearance
);
Een document maken
Maak een document in de verzameling met behulp van een collection.ReplaceOneAsync<> met de generieke typeparameter Product. Met deze methode wordt het document bijgewerkt of toegevoegd, effectief vervangend als het al bestaat in de verzameling.
Product document = new(
id: "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
category: "gear-surf-surfboards",
name: "Yamba Surfboard",
quantity: 12,
price: 850.00m,
clearance: false
);
await collection.ReplaceOneAsync<Product>(
doc => doc.id == document.id,
document,
new ReplaceOptions { IsUpsert = true }
);
Een document lezen
Voer een leesbewerking uit door gebruik te maken van de unieke identificatie (id) voor de documenten. Gebruik collection.FindAsync<> met de algemene Product-typeparameter om het specifieke document efficiënt op te halen.
Product? document = await collection.Find(
doc => doc.id == "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
).SingleOrDefaultAsync();
Documenten opvragen
Voer een query uit op meerdere documenten in een container met behulp van collection.AsQueryable() een LINQ (Language Integrated Query). Met deze query worden alle documenten in een opgegeven categorie (shardsleutel) gevonden.
List<Product> documents = await collection.Find(
filter: doc => doc.category == "gear-surf-surfboards"
).ToListAsync();
foreach (Product document in documents)
{
// Do something with each document
}
Een document verwijderen
Een document verwijderen door een filter te verzenden voor de unieke id van het document. Gebruik collection.DeleteOneAsync<> dit om het document asynchroon uit de verzameling te verwijderen.
await collection.DeleteOneAsync(
doc => doc.id == "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
);
Uw gegevens verkennen
Gebruik de Visual Studio Code-extensie voor Azure Cosmos DB om uw MongoDB vCore-gegevens te verkennen. U kunt kerndatabasebewerkingen uitvoeren, waaronder, maar niet beperkt tot:
- Query's uitvoeren met behulp van een scrapbook of de query-editor
- Documenten wijzigen, bijwerken, maken en verwijderen
- Bulkgegevens importeren uit andere bronnen
- Databases en verzamelingen beheren
Zie voor meer informatie Hoe de Visual Studio Code-extensie te gebruiken om Azure Cosmos DB voor MongoDB vCore-gegevens te verkennen.
Hulpmiddelen opruimen
Wanneer u de voorbeeldtoepassing of resources niet meer nodig hebt, verwijdert u de bijbehorende implementatie en alle resources.
azd down --force