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
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- GitHub-fiók
- Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.
- Azure Developer CLI
- Docker Desktop
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.
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.
Nyisson meg egy terminált a projekt gyökérkönyvtárában.
Hitelesítés az Azure Developer CLI-vel
azd auth login
a . 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
A projekt inicializálására használható
azd init
.azd init --template cosmos-db-mongodb-dotnet-quickstart
Feljegyzés
Ez a rövid útmutató az azure-samples/cosmos-db-mongodb-dotnet-quickstart sablon GitHub-adattárat használja. Az Azure Developer CLI automatikusan klónozza ezt a projektet a gépére, ha még nincs ott.
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
.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
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.
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.
A konzol URL-címével keresse meg a webalkalmazást a böngészőben. Figyelje meg a futó alkalmazás kimenetét.
Telepítse az ügyfélkódtárat
Az ügyfélkódtár csomagként Microsoft.Azure.Cosmos
a NuGeten keresztül érhető el.
Nyisson meg egy terminált, és keresse meg a
/src/web
mappát.cd ./src/web
Ha még nincs telepítve, telepítse a csomagot a
MongoDb.Driver
következőveldotnet add package
: .dotnet add package MongoDb.Driver
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.
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 olyan gyűjteményre hivatkozik, 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
- Az ügyfél hitelesítése
- Adatbázis létrehozása
- Tároló létrehozása
- Elem létrehozása
- Elem lekérése
- Lekérdezési elemek
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 az Azure Developer CLI által 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 IQueryable
egyké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