MongoDB için Azure veritabanı API'sinde depolanan Cosmos yönetmek için MongoDB uzantısı komutlarını kullanma

Uygulama hedefı: MongoDB için Azure Cosmos DB API

Aşağıdaki belge, MongoDB için Azure veritabanı API'sini Cosmos özel eylem komutlarını içerir. Bu komutlar, Azure veritabanı veritabanı kapasite modeline özgü veritabanı kaynaklarını oluşturmak ve Cosmos için kullanılabilir.

MongoDB için Azure Cosmos DB API'sini kullanarak, MongoDB uygulamanıza yatırımlarınızı korurken genel dağıtım, otomatik parçalama, yüksek kullanılabilirlik, gecikme süresi garantileri, otomatik, bekleme sırasında şifreleme, yedeklemeler ve çok daha fazlası gibi Cosmos DB'nin avantajlarından faydalanabilirsiniz. MongoDB için Azure Cosmos DB API'si ile iletişim kurmak için açık kaynak MongoDB istemci sürücülerini kullanabilirsiniz. MongoDB için Azure Cosmos DB API'si, MongoDB kablo protokolüne bağlı olarak mevcut istemci sürücülerinin kullanımını sağlar.

MongoDB protokol desteği

MongoDB için Azure Cosmos DB API'si MongoDB sunucu sürümü 4.0, 3.6 ve 3.2 ile uyumludur. Diğer ayrıntılar için 4.0, 3.6ve 3.2makalesinde desteklenen özellikler ve söz dizimi makalesine bakın.

Aşağıdaki uzantı komutları veritabanı istekleri aracılığıyla Azure veritabanına özgü Cosmos oluşturma ve değiştirme olanağı sağlar:

Veritabanı oluşturma

Veritabanı uzantısı oluştur komutu yeni bir MongoDB veritabanı oluşturur. Veritabanı adı, komutu tarafından ayarlanmış olan veritabanı bağlamından use database kullanılabilir. Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Açıklama
customAction string Özel komutun adı, "CreateDatabase" olması gerekir.
offerThroughput int Veritabanında ayar varsayılan olarak sağlanan aktarım hızı. Bu parametre isteğe bağlıdır.
autoScaleSettings Object Otomatik ölçeklendirme modu için gereklidir. Bu nesne, Otomatik ölçeklendirme kapasite moduyla ilişkili ayarları içerir. Koleksiyonun dinamik maxThroughput olarak artırılacak en yüksek İstek Birimi miktarını açıklayan değerini oluşturabilirsiniz.

Çıktı

Komut başarılı olursa aşağıdaki yanıtı geri döner:

{ "ok" : 1 }

Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

Veritabanı oluşturma

Tüm varsayılan değerleri "test" kullanan adlı bir veritabanı oluşturmak için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateDatabase"});

Bu komut, veritabanı düzeyinde aktarım hızı olmayan bir veritabanı oluşturur. Bu, bu veritabanı içindeki koleksiyonların, kullanmak istediğiniz aktarım hızı miktarını belirtmesi gereken anlamına gelir.

Aktarım hızı ile veritabanı oluşturma

veritabanı düzeyinde sağlanan "test" 1000 RU aktarım hızını belirtmek için ve adlı bir veritabanı oluşturmak için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateDatabase", offerThroughput: 1000 });

Bu işlem bir veritabanı oluşturur ve buna bir aktarım hızı oluşturur. Koleksiyonlar belirli bir aktarım hızı düzeyinde oluşturulmadıkça, bu veritabanındaki tüm koleksiyonlar ayarlanmış aktarım hızını paylaşır.

Otomatik ölçeklendirme aktarım hızı ile veritabanı oluşturma

veritabanı düzeyinde "test" 20.000 RU/sn otomatik ölçeklendirme maksimum aktarım hızı belirtmek üzere ve adlı bir veritabanı oluşturmakiçin aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateDatabase", autoScaleSettings: { maxThroughput: 20000 } });

Veritabanını güncelleştirme

Veritabanı uzantısını güncelleştir komutu, belirtilen veritabanıyla ilişkili özellikleri güncelleştirmektedir. Veritabanınızı sağlanan aktarım hızından otomatik ölçeklendirmeye (veya tam tersi) değiştirmek yalnızca Azure Portal'da de geçerlidir. Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Açıklama
customAction string Özel komutun adı. "UpdateDatabase" olması gerekir.
offerThroughput int Veritabanı veritabanı düzeyinde aktarım hızı kullanıyorsa veritabanında ayarlamak istediğiniz yeni sağlanan aktarım hızı
autoScaleSettings Object Otomatik ölçeklendirme modu için gereklidir. Bu nesne, Otomatik ölçeklendirme kapasite moduyla ilişkili ayarları içerir. Veritabanının dinamik maxThroughput olarak artırılacak en yüksek İstek Birimi miktarını açıklayan değerini oluşturabilirsiniz.

Bu komut, oturum bağlamında belirtilen veritabanını kullanır. Bu, komutunda kullanılan use <database> veritabanıdır. Şu anda bu komut kullanılarak veritabanı adı değiştirilemez.

Çıktı

Komut başarılı olursa aşağıdaki yanıtı geri döner:

{ "ok" : 1 }

Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

Veritabanıyla ilişkili sağlanan aktarım hızını güncelleştirme

Bir veritabanının sağlanan aktarım hızını adıyla "test" 1200 RU olarak güncelleştirmek için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "UpdateDatabase", offerThroughput: 1200 });

Veritabanıyla ilişkili Otomatik Ölçeklendirme aktarım hızını güncelleştirme

Bir veritabanının sağlanan aktarım hızını adıyla "test" 20.000 RU'ya güncelleştirmek veya otomatik ölçeklendirme aktarım hızı düzeyine dönüştürmek için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "UpdateDatabase", autoScaleSettings: { maxThroughput: 20000 } });

Veritabanı al

Veritabanı uzantısını al komutu veritabanı nesnesini döndürür. Veritabanı adı, komutun yürütül olduğu veritabanı bağlamından kullanılır.

{
  customAction: "GetDatabase"
}

Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Açıklama
customAction string Özel komutun adı. "GetDatabase" olması gerekir

Çıktı

Komut başarılı olursa yanıt aşağıdaki alanları içeren bir belge içerir:

Alan Tür Açıklama
ok int Yanıtın durumu. 1 == başarılı. 0 == hatası.
database string Veritabanının adı.
provisionedThroughput int Veritabanı el ile veritabanı düzeyinde aktarım hızı kullanıyorsa veritabanında ayarlanmış sağlanan aktarım hızı
autoScaleSettings Object Bu nesne, Otomatik Ölçeklendirme modunu kullanıyorsa veritabanıyla ilişkili kapasite parametrelerini içerir. değeri, maxThroughput veritabanının dinamik olarak artırılacak en yüksek İstek Birimi miktarını açıklar.

Komut başarısız olursa, varsayılan bir özel komut yanıtı döndürülür. Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

Veritabanını al

adlı bir veritabanının veritabanı nesnesini almak "test" için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "GetDatabase"});

Veritabanında ilişkili aktarım hızı yoksa çıkış şöyle olur:

{ "database" : "test", "ok" : 1 }

Veritabanıyla ilişkilendirilmiş veritabanı düzeyinde el ile aktarım hızı varsa, çıktıda değerler provisionedThroughput gösterebilirsiniz:

{ "database" : "test", "provisionedThroughput" : 20000, "ok" : 1 }

Veritabanıyla ilişkilendirilmiş veritabanı düzeyinde bir Otomatik Ölçeklendirme aktarım hızı varsa, çıktıda veritabanı için en düşük RU/sn'nin ve veritabanı için maksimum provisionedThroughput autoScaleSettings RU/sn'nin açık olduğu dahil nesnesi maxThroughput görüntülenir.

{
        "database" : "test",
        "provisionedThroughput" : 2000,
        "autoScaleSettings" : {
                "maxThroughput" : 20000
        },
        "ok" : 1
}

Koleksiyon oluşturma

Koleksiyon uzantısı oluştur komutu yeni bir MongoDB koleksiyonu oluşturur. Veritabanı adı komutu tarafından ayarlanmış veritabanları bağlamından use database kullanılır. CreateCollection komutunun biçimi aşağıdaki gibidir:

{
  customAction: "CreateCollection",
  collection: "<Collection Name>",
  shardKey: "<Shard key path>",
  // Replace the line below with "autoScaleSettings: { maxThroughput: (int) }" to use Autoscale instead of Provisioned Throughput. Fill the required Autoscale max throughput setting.
  offerThroughput: (int) // Provisioned Throughput enabled with required throughput amount set.
  indexes: [{key: {_id: 1}, name: "_id_1"}, ... ] // Optional indexes (3.6+ accounts only).
}

Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Gerekli Açıklama
customAction string Gerekli Özel komutun adı. "CreateCollection" olması gerekir.
collection string Gerekli Koleksiyonun adı. Özel karakter veya boşluklara izin verilmez.
offerThroughput int İsteğe Bağlı Veritabanında ayar yapmak için sağlanan aktarım hızı. Bu parametre sağlanmazsa, varsayılan olarak en düşük 400 RU/sn'ye ayarlar. * Aktarım hızını 10.000 RU/sn'nin üzerinde shardKey belirtmek için parametresi gereklidir.
shardKey string Büyük aktarım hızına sahip koleksiyonlar için gereklidir Parçalı koleksiyon için Parça Anahtarı yolu. içinde 10.000'den fazla RU/sn ayarsanız bu parametre offerThroughput gereklidir. Belirtilirse eklenen tüm belgeler için bu anahtar ve değer gerekir.
autoScaleSettings Object Otomatik ölçeklendirme modu için gereklidir Bu nesne, Otomatik ölçeklendirme kapasite moduyla ilişkili ayarları içerir. Koleksiyonun dinamik maxThroughput olarak artırılacak en yüksek İstek Birimi miktarını açıklayan değerini oluşturabilirsiniz.
indexes Array İsteğe bağlı olarak dizinleri yapılandırma. Bu parametre yalnızca 3.6+ hesaplarda de destekleni. Mevcut olduğunda, bir _id gerekir. Dizide yer alan her giriş bir veya daha fazla alan, ad ve dizin seçenekleri içerebilir. Örneğin, alanlarda bileşik benzersiz bir dizin oluşturmak ve a şu b girişi kullanmak için: {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true} .

Çıktı

Varsayılan özel komut yanıtını döndürür. Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

En düşük yapılandırmaya sahip bir koleksiyon oluşturma

Ad ve varsayılan değerlerle yeni "testCollection" bir koleksiyon oluşturmak için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection"});

Bunun sonucunda 400RU/sn'ye sahip yeni bir sabit, parçasız koleksiyon ve alanda otomatik olarak bir _id dizin oluşturulur. Bu yapılandırma türü, işlevi aracılığıyla yeni koleksiyonlar oluşturulurken de insert() geçerlidir. Örnek:

use test
db.newCollection.insert({});

Parçalanmamış koleksiyon oluşturma

Adı ve sağlanan aktarım hızı 1000 RU olan parçasız bir koleksiyon oluşturmak "testCollection" için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 1000});

Parça anahtarı belirtmek zorunda kalmadan olarak en fazla 10.000 RU/sn ile offerThroughput bir koleksiyon oluşturabilirsiniz. Daha büyük aktarım hızına sahip koleksiyonlar için sonraki bölüme göz atabilirsiniz.

Parçalı koleksiyon oluşturma

Adı ve sağlanan 11.000 RU aktarım hızına ve "testCollection" "a.b" özelliğine sahip parçalı bir koleksiyon oluşturmak shardkey için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 11000, shardKey: "a.b" });

içinde shardKey 10.000'den fazla RU/sn belirtiliyor olduğu için bu komut artık parametresini offerThroughput gerektirir.

Parçalanmamış otomatik ölçeklendirme koleksiyonu oluşturma

'testCollection'4.000 RU/sn olarak ayarlanmış Otomatik Ölçeklendirme aktarım hızı kapasitesini kullanan adlı parçasız bir koleksiyon oluşturmak için aşağıdaki komutu kullanın:

use test
db.runCommand({ 
    customAction: "CreateCollection", collection: "testCollection", 
    autoScaleSettings:{
      maxThroughput: 4000
    } 
});

Değer autoScaleSettings.maxThroughput için parça anahtarı olmadan 4.000 RU/sn ile 10.000 RU/sn arasında bir aralık belirtsiniz. Daha yüksek otomatik ölçeklendirme aktarım hızı için parametresini belirtmeniz shardKey gerekir.

Parçalı Otomatik Ölçeklendirme koleksiyonu oluşturma

adlı bir parça anahtarı ile adlı ve 'testCollection' 'a.b' 20.000 RU/sn olarak ayarlanmış otomatik ölçeklendirme aktarım hızı kapasitesini kullanan parçalı bir koleksiyon oluşturmak için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", shardKey: "a.b", autoScaleSettings: { maxThroughput: 20000 }});

Koleksiyonu güncelleştirme

Koleksiyon uzantısını güncelleştir komutu, belirtilen koleksiyonla ilişkili özellikleri güncelleştirmektedir. Koleksiyonun sağlanan aktarım hızından otomatik ölçeklendirmeye (veya tersine) değiştirilmesi yalnızca Azure Portal'da de geçerlidir.

{
  customAction: "UpdateCollection",
  collection: "<Name of the collection that you want to update>",
  // Replace the line below with "autoScaleSettings: { maxThroughput: (int) }" if using Autoscale instead of Provisioned Throughput. Fill the required Autoscale max throughput setting. Changing between Autoscale and Provisioned throughput is only supported in the Azure Portal.
  offerThroughput: (int) // Provisioned Throughput enabled with required throughput amount set.
  indexes: [{key: {_id: 1}, name: "_id_1"}, ... ] // Optional indexes (3.6+ accounts only).
}

Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Açıklama
customAction string Özel komutun adı. "UpdateCollection" olması gerekir.
collection string Koleksiyonun adı.
offerThroughput int Koleksiyonda ayar yapmak için sağlanan aktarım hızı.
autoScaleSettings Object Otomatik ölçeklendirme modu için gereklidir. Bu nesne, Otomatik ölçeklendirme kapasite moduyla ilişkili ayarları içerir. değeri, maxThroughput koleksiyonun dinamik olarak artırılacak en yüksek İstek Birimi miktarını açıklar.
indexes Array İsteğe bağlı olarak dizinleri yapılandırma. Bu parametre yalnızca 3.6+ hesaplarda de destekleni. Mevcut olduğunda, koleksiyonun mevcut dizinleri belirtilen dizin kümesiyle (dizin bırakma dahil) değiştirilir. Bir dizin _id gereklidir. Dizide yer alan her giriş bir veya daha fazla alan, ad ve dizin seçenekleri içerebilir. Örneğin, a ve b alanlarında bileşik benzersiz bir dizin oluşturmak için şu girdiyi kullanın: {key: {a: 1, b: 1}, name: "a_1_b_1", unique: true} .

Çıktı

Varsayılan özel komut yanıtını döndürür. Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

Bir koleksiyonla ilişkili sağlanan aktarım hızını güncelleştirme

Bir koleksiyonun sağlanan aktarım hızını adıyla "testCollection" 1200 RU olarak güncelleştirmek için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "UpdateCollection", collection: "testCollection", offerThroughput: 1200 });

Koleksiyon al

Get collection özel komutu, koleksiyon nesnesini döndürür.

{
  customAction: "GetCollection",
  collection: "<Name of the collection>"
}

Aşağıdaki tabloda komutun içindeki parametreler açık almaktadır:

Alan Tür Açıklama
customAction string Özel komutun adı. "GetCollection" olması gerekir.
collection string Koleksiyonun adı.

Çıktı

Komut başarılı olursa yanıt aşağıdaki alanları içeren bir belge içerir

Alan Tür Açıklama
ok int Yanıtın durumu. 1 == başarılı. 0 == hatası.
database string Veritabanının adı.
collection string Koleksiyonun adı.
shardKeyDefinition document Parça anahtarı olarak kullanılan dizin belirtimi belgesi. Bu isteğe bağlı bir yanıt parametresidir.
provisionedThroughput int Koleksiyonda ayar yapmak için Sağlanan Aktarım Hızı. Bu isteğe bağlı bir yanıt parametresidir.
autoScaleSettings Object Bu nesne, Otomatik Ölçeklendirme modunu kullanıyorsa veritabanıyla ilişkili kapasite parametrelerini içerir. değeri, maxThroughput koleksiyonun dinamik olarak artırılacak en yüksek İstek Birimi miktarını açıklar.

Komut başarısız olursa, varsayılan bir özel komut yanıtı döndürülür. Çıkışta parametreler için özel komutun varsayılan çıkışına bakın.

Örnekler

Koleksiyonu al

adlı bir koleksiyonun koleksiyon nesnesini almak "testCollection" için aşağıdaki komutu kullanın:

use test
db.runCommand({customAction: "GetCollection", collection: "testCollection"});

Koleksiyonda ilişkili bir aktarım hızı kapasitesi varsa değeri dahil provisionedThroughput eder ve çıktı şöyle olur:

{
        "database" : "test",
        "collection" : "testCollection",
        "provisionedThroughput" : 400,
        "ok" : 1
}

Koleksiyonun ilişkili bir Otomatik Ölçeklendirme aktarım hızı varsa, koleksiyon dinamik olarak artıracak maksimum aktarım hızını tanımlayan autoScaleSettings maxThroughput parametresiyle nesnesini içerir. Ayrıca, koleksiyonda istek yoksa bu koleksiyonun azaltacak minimum aktarım hızını tanımlayan provisionedThroughput değeri de içerir:

{
        "database" : "test",
        "collection" : "testCollection",
        "provisionedThroughput" : 1000,
        "autoScaleSettings" : {
            "maxThroughput" : 10000
        },
        "ok" : 1
}

Koleksiyon veritabanı düzeyinde aktarım hızını paylaşıyorsa,Otomatik ölçeklendirme modunda veya el ile çıkış şu şekilde olur:

{ "database" : "test", "collection" : "testCollection", "ok" : 1 }
{
        "database" : "test",
        "provisionedThroughput" : 2000,
        "autoScaleSettings" : {
            "maxThroughput" : 20000
        },
        "ok" : 1
}

Değişiklik akışlarını paralelleştirme

Değişiklik akışlarını büyük ölçekte kullanırken yükün doğru şekilde yayılması en iyisidir. Aşağıdaki komut bir veya daha fazla değişiklik akışı sürdürme belirteci ( her biri tek bir fiziksel parçadan/bölümden gelen verilere karşılık gelen bir belirteç) (tek bir fiziksel bölümde birden çok mantıksal parça/bölüm olabilir) geri döner. Her sürdürme belirteci watch() işlevinin yalnızca bu fiziksel parçadan/bölümden veri dönmesine neden olur.

Her sürdürme belirteci üzerinde db.collection.watch() çağrısı (belirteç başına bir iş parçacığı), değişiklik akışlarını verimli bir şekilde ölçeklendirecek.

{
        customAction: "GetChangeStreamTokens", 
        collection: "<Name of the collection>", 
        startAtOperationTime: "<BSON Timestamp>" // Optional. Defaults to the time the command is run.
} 

Örnek

Her fiziksel parça/bölüm için bir sürdürme belirteci almak üzere özel komutu çalıştırın.

use test
db.runCommand({customAction: "GetChangeStreamTokens", collection: "<Name of the collection>"})

GetChangeStreamTokens özel komutundan döndürülen her sürdürme belirteci için bir watch() iş parçacığı/işlemi çalıştırın. Aşağıda bir iş parçacığı örneği verilmiştir.

db.test_coll.watch([{ $match: { "operationType": { $in: ["insert", "update", "replace"] } } }, { $project: { "_id": 1, "fullDocument": 1, "ns": 1, "documentKey": 1 } }], 
{fullDocument: "updateLookup", 
resumeAfter: { "_data" : BinData(0,"eyJWIjoyLCJSaWQiOiJQeFVhQUxuMFNLRT0iLCJDb250aW51YXRpb24iOlt7IkZlZWRSYW5nZSI6eyJ0eXBlIjoiRWZmZWN0aXZlIFBhcnRpdGlvbiBLZXkgUmFuZ2UiLCJ2YWx1ZSI6eyJtaW4iOiIiLCJtYXgiOiJGRiJ9fSwiU3RhdGUiOnsidHlwZSI6ImNvbnRpbndkFLbiIsInZhbHVlIjoiXCIxODQ0XCIifX1dfQ=="), "_kind" : NumberInt(1)}})

resumeAfter alanında belge (değer), sürdürme belirteci temsil eder. watch(), GetChangeStreamTokens özel komutu çalıştırıldığından bu fiziksel bölümden eklenen, güncelleştirilen veya değiştirilmiş tüm belgeler için bir büyüleyici geri döner. Döndürülen verilerin bir örneği aşağıda verilmiştir.

{ "_id" : { "_data" : BinData(0,"eyJWIjoyLCJSaWQiOiJQeFVhQUxuMFNLRT0iLCJDfdsfdsfdsft7IkZlZWRSYW5nZSI6eyJ0eXBlIjoiRWZmZWN0aXZlIFBhcnRpdGlvbiBLZXkgUmFuZ2UiLCJ2YWx1ZSI6eyJtaW4iOiIiLCJtYXgiOiJGRiJ9fSwiU3RhdGUiOnsidHlwZSI6ImNvbnRpbnVhdGlvbiIsInZhbHVlIjoiXCIxOTgwXCIifX1dfQ=="), "_kind" : 1 },
 "fullDocument" : { "_id" : ObjectId("60da41ec9d1065b9f3b238fc"), "name" : John, "age" : 6 }, "ns" : { "db" : "test-db", "coll" : "test_coll" }, "documentKey" : { "_id" : ObjectId("60da41ec9d1065b9f3b238fc") }}

Döndürülen her belgenin bir sürdürme belirteci (her sayfa için aynı) olduğunu unutmayın. bu sürdürme belirteci, iş parçacığı/işlem devam ederse depolanmış ve yeniden kullanılmıştır. Bu sürdürme belirteci, kaldığın yerden alır ve yalnızca bu fiziksel bölümden veri alır.

Özel komutun varsayılan çıkışı

Belirtilmezse, özel yanıt aşağıdaki alanlara sahip bir belge içerir:

Alan Tür Açıklama
ok int Yanıtın durumu. 1 == başarılı. 0 == hatası.
code int Yalnızca komut başarısız olduğunda (ok == 0) döndürülür. MongoDB hata kodunu içerir. Bu isteğe bağlı bir yanıt parametresidir.
errMsg string Yalnızca komut başarısız olduğunda (ok == 0) döndürülür. Kullanıcı dostu bir hata iletisi içerir. Bu isteğe bağlı bir yanıt parametresidir.

Örnek:

{ "ok" : 1 }

Sonraki adımlar

Bundan sonra aşağıdaki Azure veritabanı veritabanı kavramlarını Cosmos devam edebilirsiniz: