Rövid útmutató: Az Azure Cosmos DB for MongoDB for .NET a MongoDB illesztőprogrammal

A KÖVETKEZŐKRE VONATKOZIK: MongoDB

Ismerkedjen meg a MongoDB-vel, hogy adatbázisokat, gyűjteményeket és dokumentumokat hozzon létre az Azure Cosmos DB-erőforrásban. Az alábbi lépéseket követve üzembe helyezhet egy minimális megoldást a környezetében az Azure Developer CLI használatával.

A MongoDB-hez készült API referenciadokumentációja | MongoDB Package (NuGet) csomagok/Microsoft.Azure.Cosmos) | Azure Developer CLI

Előfeltételek

Beállítás

Helyezze üzembe a projekt fejlesztési tárolóját a környezetében. Ezután az Azure Developer CLI (azd) használatával hozzon létre egy Azure Cosmos DB-fiókot MongoDB-fiókhoz, és helyezzen üzembe egy tárolóalapú mintaalkalmazást. A mintaalkalmazás az ügyfélkódtárat használja a mintaadatok kezelésére, létrehozására, olvasására és lekérdezésére.

Megnyitás a GitHub Codespacesben

Megnyitás a Dev Containerben

Fontos

A GitHub-fiókok magukban foglalják a tárterületre és az alapórákra való jogosultságot díjmentesen. További információkért tekintse meg a GitHub-fiókokhoz tartozó tárterületet és alapórákat.

  1. Nyisson meg egy terminált a projekt gyökérkönyvtárában.

  2. Hitelesítés az Azure Developer CLI-vel azd auth logina . Kövesse az eszköz által megadott lépéseket a parancssori felületre való hitelesítéshez az ön által előnyben részesített Azure-hitelesítő adatokkal.

    azd auth login
    
  3. A projekt inicializálására használható azd init .

    azd init
    
  4. Az inicializálás során konfiguráljon egy egyedi környezetnevet.

    Tipp.

    A rendszer a környezet nevét is használja a célerőforráscsoport neveként. Ebben a rövid útmutatóban fontolja meg a használatát msdocs-cosmos-db-.

  5. Az Azure Cosmos DB-fiók üzembe helyezése a következő használatával azd up: . A Bicep-sablonok egy minta webalkalmazást is üzembe helyeznek.

    azd up
    
  6. A kiépítési folyamat során válassza ki az előfizetést és a kívánt helyet. Várja meg, amíg a kiépítési folyamat befejeződik. A folyamat körülbelül öt percet vehet igénybe.

  7. Az Azure-erőforrások kiépítése után a kimenet tartalmazza a futó webalkalmazás URL-címét.

    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. A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.

    Képernyőkép a futó webalkalmazásról.


Telepítse az ügyfélkódtárat

Az ügyfélkódtár csomagként Microsoft.Azure.Cosmos a NuGeten keresztül érhető el.

  1. Nyisson meg egy terminált, és keresse meg a /src/web mappát.

    cd ./src/web
    
  2. Ha még nincs telepítve, telepítse a csomagot a MongoDb.Driver következővel dotnet add package: .

    dotnet add package MongoDb.Driver
    
  3. Emellett telepítse a Azure.Identity csomagot, ha még nincs telepítve.

    dotnet add package Azure.Identity
    

Objektummodell

Mielőtt elkezdené az alkalmazást, nézzük meg az Azure Cosmos DB-ben található erőforrások hierarchiáját. Az Azure Cosmos DB egy adott objektummodellt használ erőforrások létrehozásához és eléréséhez. Az Azure Cosmos DB olyan hierarchiában hoz létre erőforrásokat, amelyek fiókokból, adatbázisokból, gyűjteményekből és dokumentumokból állnak.

Az Azure Cosmos DB-hierarchia diagramja, beleértve a fiókokat, adatbázisokat, gyűjteményeket és dokumentumokat.

Hierarchikus diagram egy Azure Cosmos DB-fiókot ábrázol felül. A fiók két gyermekadatbázis-szegmensből áll. Az adatbázis-szegmensek egyike két gyermekgyűjteményi szegmenst tartalmaz. A másik adatbázis-szegmens egyetlen gyermekgyűjteményi szegmenst tartalmaz. Az egyetlen gyűjtemény szegmense három gyermek-dokumentum-szegmensből áll.

Az alábbi MongoDB-osztályokkal kezelheti ezeket az erőforrásokat:

  • MongoClient - Ez az osztály ügyféloldali logikai ábrázolást biztosít a MongoDB-réteg API-hoz az Azure Cosmos DB-ben. Az ügyfélobjektum a szolgáltatással kapcsolatos kérések konfigurálására és végrehajtására szolgál.
  • MongoDatabase - Ez az osztály egy olyan adatbázisra mutató hivatkozás, amely lehet, hogy még létezik a szolgáltatásban. Az adatbázis kiszolgálóoldali érvényesítve van, amikor megpróbálja elérni, vagy műveletet hajt végre rajta.
  • Collection – Ez az osztály egy olyan gyűjteményre mutató hivatkozás, amely még nem létezik a szolgáltatásban. A gyűjtemény kiszolgálóoldali érvényesítve lesz, amikor megpróbál dolgozni vele.

Kódpéldák

A cikkben bemutatott mintakód létrehoz egy adatbázist, amelynek neve adventureworks egy gyűjtemény.products A products gyűjtemény olyan termékadatokat tartalmaz, mint a név, a kategória, a mennyiség és az értékesítési mutató. Minden termék egyedi azonosítót is tartalmaz.

Az ügyfél hitelesítése

Nyissa meg a Program.cs fájlt a projektkönyvtárban. A szerkesztőben adjon hozzá egy felhasználói direktívát a következőhöz MongoDB.Driver: .

using MongoDB.Driver;

Definiálja az MongoClient osztály új példányát a konstruktor használatával, és Environment.GetEnvironmentVariable olvassa el a korábban beállított kapcsolati sztring.

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

-adatbázis létrehozása

MongoClient.GetDatabase Ha még nem létezik, hozzon létre új adatbázist a metódussal. Ez a metódus a meglévő vagy újonnan létrehozott adatbázisra mutató hivatkozást ad vissza.

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

Gyűjtemény létrehozása

A MongoDatabase.GetCollection rendszer létrehoz egy új gyűjteményt, ha még nem létezik, és a gyűjteményre mutató hivatkozást ad vissza.

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

Elem létrehozása

Egy gyűjtemény új elemének létrehozásának legegyszerűbb módja egy C# -osztály vagy rekordtípus létrehozása az összes olyan taggal, amelyet JSON-ra szeretne szerializálni. Ebben a példában a C# rekord egyedi azonosítóval, a partíciókulcs kategóriamezője , valamint extra név, mennyiség és értékesítési mezőkkel rendelkezik.

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

Hozzon létre egy elemet a gyűjteményben a Product rekord meghívásával 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
));

Elem lekérése

Az Azure Cosmos DB-ben lekérdezések írásával lekérheti az elemeket a Linq használatával. Az SDK-ban egy C#-kifejezés meghívása IMongoCollection.FindAsync<> és átadása az eredmények szűréséhez.

// 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);

Lekérdezési elemek

Miután beszúrt egy elemet, egy lekérdezést futtatva lekérheti az adott szűrőnek megfelelő összes elemet, ha a gyűjteményt IQueryableegyként kezeli. Ez a példa egy kifejezést használ a termékek kategória szerinti szűrésére. Miután a hívás AsQueryable megtörtént, kérje MongoQueryable.Where le a szűrt elemek egy készletét.

// 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);
}

A kód futtatása

Ez az alkalmazás létrehoz egy Azure Cosmos DB MongoDb API-adatbázist és -gyűjteményt. A példa ezután létrehoz egy elemet, majd pontosan ugyanazt az elemet olvassa vissza. Végül a példa létrehoz egy második elemet, majd végrehajt egy lekérdezést, amely több elemet ad vissza. A példa minden lépéssel metaadatokat ad ki a konzolnak az elvégzett lépésekről.

Az alkalmazás futtatásához egy terminál használatával lépjen az alkalmazás könyvtárára, és futtassa az alkalmazást.

dotnet run

Az alkalmazás kimenetének az alábbi példához hasonlónak kell lennie:

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

Az erőforrások eltávolítása

Ha már nincs szüksége a MongoDB-hez készült Azure Cosmos DB-fiókra, törölheti a megfelelő erőforráscsoportot.

az group delete Az erőforráscsoport törléséhez használja a parancsot.

az group delete --name $resourceGroupName