Hızlı Başlangıç: MongoDB sürücüsüyle .NET için MongoDB için Azure Cosmos DB
ŞUNLAR IÇIN GEÇERLIDIR: MongoDB
Azure Cosmos DB kaynağınızda veritabanları, koleksiyonlar ve belgeler oluşturmak için MongoDB'yi kullanmaya başlayın. Azure Geliştirici CLI'sını kullanarak ortamınıza en düşük çözümü dağıtmak için bu adımları izleyin.
MongoDB için API başvuru belgeleri | MongoDB Paketi (NuGet) paketleri/Microsoft.Azure.Cosmos) | Azure Geliştirici CLI'sı
Önkoşullar
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- GitHub hesabı
- Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
- Azure Geliştirici CLI'sı
- Docker Desktop
Ayarlama
Bu projenin geliştirme kapsayıcısını ortamınıza dağıtın. Ardından Azure Geliştirici CLI'sını (azd
) kullanarak MongoDB için Azure Cosmos DB hesabı oluşturun ve kapsayıcılı örnek bir uygulama dağıtın. Örnek uygulama örnek verileri yönetmek, oluşturmak, okumak ve sorgulamak için istemci kitaplığını kullanır.
Önemli
GitHub hesapları, hiçbir ücret ödemeden depolama ve çekirdek saat yetkilendirmesi içerir. Daha fazla bilgi için bkz . GitHub hesapları için dahil edilen depolama ve çekirdek saatler.
Projenin kök dizininde bir terminal açın.
kullanarak
azd auth login
Azure Geliştirici CLI'sinde kimlik doğrulaması Tercih ettiğiniz Azure kimlik bilgilerini kullanarak CLI'da kimlik doğrulaması yapmak için araç tarafından belirtilen adımları izleyin.azd auth login
Projeyi başlatmak için kullanın
azd init
.azd init --template cosmos-db-mongodb-dotnet-quickstart
Not
Bu hızlı başlangıçta azure-samples/cosmos-db-mongodb-dotnet-quickstart şablonu GitHub deposu kullanılmaktadır. Azure Geliştirici CLI'sı, henüz orada değilse bu projeyi otomatik olarak makinenize klonlar.
Başlatma sırasında benzersiz bir ortam adı yapılandırın.
İpucu
Ortam adı, hedef kaynak grubu adı olarak da kullanılır. Bu hızlı başlangıç için kullanmayı
msdocs-cosmos-db
göz önünde bulundurun.Kullanarak
azd up
Azure Cosmos DB hesabını dağıtın. Bicep şablonları ayrıca örnek bir web uygulaması dağıtır.azd up
Sağlama işlemi sırasında aboneliğinizi ve istediğiniz konumu seçin. Sağlama işleminin tamamlanmasını bekleyin. İşlem yaklaşık beş dakika sürebilir.
Azure kaynaklarınızın sağlanması tamamlandıktan sonra, çalışan web uygulamasının URL'si çıktıya eklenir.
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.
Tarayıcıda web uygulamanıza gitmek için konsoldaki URL'yi kullanın. Çalışan uygulamanın çıkışını gözlemleyin.
İstemci kitaplığını yükleme
İstemci kitaplığı NuGet aracılığıyla paket olarak Microsoft.Azure.Cosmos
kullanılabilir.
Bir terminal açın ve klasöre
/src/web
gidin.cd ./src/web
Henüz yüklü değilse, kullanarak paketini
dotnet add package
yükleyinMongoDb.Driver
.dotnet add package MongoDb.Driver
Ayrıca, henüz yüklü değilse paketi yükleyin
Azure.Identity
.dotnet add package Azure.Identity
Nesne modeli
Uygulamayı oluşturmaya başlamadan önce Azure Cosmos DB'deki kaynak hiyerarşisini inceleyelim. Azure Cosmos DB'de kaynak oluşturmak ve kaynaklara erişmek için kullanılan belirli bir nesne modeli vardır. Azure Cosmos DB, hesaplar, veritabanları, koleksiyonlar ve belgelerden oluşan bir hiyerarşide kaynaklar oluşturur.
En üstte bir Azure Cosmos DB hesabını gösteren hiyerarşik diyagram. Hesapta iki alt veritabanı parçası vardır. Veritabanı parçalarından biri iki alt koleksiyon parçası içerir. Diğer veritabanı parçası tek bir alt koleksiyon parçası içerir. Bu tek koleksiyon parçası üç alt belge parçasına sahiptir.
Bu kaynaklarla etkileşime geçmek için aşağıdaki MongoDB sınıflarını kullanırsınız:
MongoClient
- Bu sınıf, Azure Cosmos DB'de MongoDB için API katmanı için istemci tarafı mantıksal gösterimi sağlar. İstemci nesnesi, hizmette istekleri yapılandırmak ve yürütmek için kullanılır.MongoDatabase
- Bu sınıf, hizmette henüz var olabilecek veya bulunmayabilecek bir veritabanına başvurudur. Veritabanına erişmeye veya ona karşı bir işlem gerçekleştirmeye çalıştığınızda veritabanı sunucu tarafında doğrulanır.Collection
- Bu sınıf, hizmette henüz mevcut olmayan bir koleksiyona başvurudur. Koleksiyon, onunla çalışmaya çalıştığınızda sunucu tarafında doğrulanır.
Kod örnekleri
- İstemcinin kimliğini doğrulama
- Veritabanı oluşturma
- Kapsayıcı oluşturma
- Öğe oluşturma
- Öğe alma
- Sorgu öğeleri
Bu makalede gösterildiği gibi örnek kod adlı bir koleksiyonla adlı adventureworks
products
bir veritabanı oluşturur. Koleksiyon products
ad, kategori, miktar ve satış göstergesi gibi ürün ayrıntılarını içerecek şekilde tasarlanmıştır. Her ürün benzersiz bir tanımlayıcı da içerir.
İstemcinin kimliğini doğrulama
Proje dizininden Program.cs dosyasını açın. Düzenleyicinizde için MongoDB.Driver
bir using yönergesi ekleyin.
using MongoDB.Driver;
Oluşturucuyu MongoClient
kullanarak sınıfının yeni bir örneğini tanımlayın ve Environment.GetEnvironmentVariable
daha önce Azure Geliştirici CLI tarafından ayarlanan bağlantı dizesi okuyun.
// New instance of CosmosClient class
var client = new MongoClient(Environment.GetEnvironmentVariable("MONGO_CONNECTION"));
veritabanı oluşturun
MongoClient.GetDatabase
Henüz yoksa yeni bir veritabanı oluşturmak için yöntemini kullanın. Bu yöntem var olan veya yeni oluşturulan veritabanına bir başvuru döndürür.
// Database reference with creation if it does not already exist
var db = client.GetDatabase("adventure");
Koleksiyon oluşturma
MongoDatabase.GetCollection
henüz yoksa yeni bir koleksiyon oluşturur ve koleksiyona bir başvuru döndürür.
// Container reference with creation if it does not alredy exist
var _products = db.GetCollection<Product>("products");
Öğe oluşturma
Koleksiyonda yeni öğe oluşturmanın en kolay yolu, JSON'da seri hale getirmek istediğiniz tüm üyeleri içeren bir C# sınıfı veya kayıt türü oluşturmaktır. Bu örnekte, C# kaydı benzersiz bir tanımlayıcıya, bölüm anahtarı için bir kategori alanına ve ek ad, miktar ve satış alanlarına sahiptir.
public record Product(
string Id,
string Category,
string Name,
int Quantity,
bool Sale
);
komutunu çağırarak IMongoCollection<TDocument>.InsertOne
kaydı kullanarak Product
koleksiyonda bir öğe oluşturun.
// Create new object and upsert (create or replace) to container
_products.InsertOne(new Product(
Guid.NewGuid().ToString(),
"gear-surf-surfboards",
"Yamba Surfboard",
12,
false
));
Öğe alma
Azure Cosmos DB'de Linq kullanarak sorgu oluşturarak öğeleri alabilirsiniz. SDK'da sonuçları filtrelemek için bir C# ifadesi çağırın IMongoCollection.FindAsync<>
ve geçirin.
// 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);
Sorgu öğeleri
Öğe ekledikten sonra, koleksiyonu olarak değerlendirerek belirli bir filtreyle eşleşen tüm öğeleri almak için bir IQueryable
sorgu çalıştırabilirsiniz. Bu örnekte, ürünleri kategoriye göre filtrelemek için bir ifade kullanılır. çağrısı AsQueryable
yapıldıktan sonra bir dizi filtrelenmiş öğeyi almak için çağrısında MongoQueryable.Where
bulunun.
// 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);
}
Kodu çalıştırma
Bu uygulama bir Azure Cosmos DB MongoDb API veritabanı ve koleksiyonu oluşturur. Örnek daha sonra bir öğe oluşturur ve tam olarak aynı öğeyi yeniden okur. Son olarak, örnek ikinci bir öğe oluşturur ve birden çok öğe döndürmesi gereken bir sorgu gerçekleştirir. Her adımda örnek, gerçekleştirilen adımlarla ilgili meta verileri konsola gönderir.
Uygulamayı çalıştırmak için bir terminal kullanarak uygulama dizinine gidin ve uygulamayı çalıştırın.
dotnet run
Uygulamanın çıkışı şu örneğe benzer olmalıdır:
Single product name:
Yamba Surfboard
Multiple products:
Yamba Surfboard
Sand Surfboard
Kaynakları temizleme
MongoDB için Azure Cosmos DB hesabına artık ihtiyacınız kalmadığında ilgili kaynak grubunu silebilirsiniz.
az group delete
Kaynak grubunu silmek için komutunu kullanın.
az group delete --name $resourceGroupName