Megosztás a következőn keresztül:


MongoDB-bővítményparancsok használata a MongoDB-hez készült Azure Cosmos DB-ben tárolt adatok kezeléséhez

A KÖVETKEZŐKRE VONATKOZIK: MongoDB

Az alábbi dokumentum a MongoDB-hez készült Azure Cosmos DB-hez tartozó egyéni műveleti parancsokat tartalmazza. Ezek a parancsok az Azure Cosmos DB kapacitásmodelljének megfelelő adatbázis-erőforrások létrehozására és beszerzésére használhatók.

A MongoDB-hez készült Azure Cosmos DB használatával élvezheti az Azure Cosmos DB megosztott előnyeit. Ezek az előnyök magukban foglalják, de nem korlátozódnak a következőkre:

  • Globális terjesztés
  • Automatikus horizontális skálázás
  • Magas szintű rendelkezésre állás
  • Késési garancia
  • Titkosítás inaktív állapotban
  • Biztonsági másolatok

Ezeket az előnyöket élvezheti, miközben megőrzi a meglévő MongoDB-alkalmazásaiban lévő befektetéseit. A MongoDB-hez készült Azure Cosmos DB-vel a nyílt forráskódú MongoDB-ügyfélillesztők bármelyikével kommunikálhat. A MongoDB-hez készült Azure Cosmos DB lehetővé teszi a meglévő ügyfélillesztők használatát a MongoDB-drótprotokollhoz való csatlakoztatással.

MongoDB protokoll támogatása

Az Azure Cosmos DB for MongoDB kompatibilis a MongoDB-kiszolgáló 4.0-s, 3.6-os és 3.2-es verziójával. További információkért tekintse meg a 4.0-s, 3.6-os és 3.2-s verziók támogatott funkcióit és szintaxisát.

A következő bővítményparancsok adatbázis-kérelmeken keresztül hoznak létre és módosítanak Azure Cosmos DB-specifikus erőforrásokat:

Adatbázis létrehozása

Az adatbázisbővítmény létrehozása parancs létrehoz egy új MongoDB-adatbázist. Az adatbázis neve a parancs által use database beállított adatbázis-környezetből használható. Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Leírás
customAction string Az egyéni parancs neve. Az értéknek a következőnek kell lennie CreateDatabase: .
offerThroughput int Az adatbázison beállított kiosztott átviteli sebesség. Ez a paraméter nem kötelező.
autoScaleSettings Object Az automatikus skálázási módhoz szükséges. Ez az objektum az automatikus skálázási kapacitás módhoz társított beállításokat tartalmazza. Beállíthatja az maxThroughput értéket, amely a gyűjtemény által dinamikusan növelhető kérelemegységek legnagyobb számát írja le.

Hozam

Ha a parancs sikeres, a következő választ adja vissza:

{ "ok" : 1 }

Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: Adatbázis létrehozása

Az összes alapértelmezett értéket használó adatbázis "test" létrehozásához használja a következő parancsot:

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

Ez a parancs adatbázisszintű átviteli sebesség nélküli adatbázist hoz létre. Ez a művelet azt jelenti, hogy az adatbázis gyűjteményeinek meg kell adniuk a használni kívánt átviteli sebességet.

Példa: Adatbázis létrehozása átviteli sebességgel

Egy elnevezett "test" adatbázis létrehozásához és egy 1000 kérelemegységet tartalmazó, adatbázisszintű kiosztott átviteli sebesség megadásához használja a következő parancsot:

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

Ez a parancs létrehoz egy adatbázist, és beállít egy átviteli sebességet. Az adatbázisban található összes gyűjtemény osztozik a beállított átviteli sebességen, kivéve, ha a gyűjtemények egy adott átviteli sebességgel jönnek létre.

Példa: Adatbázis létrehozása automatikus skálázási átviteli sebességgel

Ha elnevezett "test" adatbázist szeretne létrehozni, és 20 000 RU/s automatikus skálázási maximális átviteli sebességet szeretne megadni adatbázisszinten, használja a következő parancsot:

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

Adatbázis frissítése

Az adatbázis-bővítmény frissítési parancsa frissíti a megadott adatbázishoz társított tulajdonságokat. Az adatbázis kiosztott átviteli sebességről automatikus skálázásra való módosítása és fordítva, csak az Azure Portalon támogatott. Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Leírás
customAction string Az egyéni parancs neve. Az értéknek a következőnek kell lennie UpdateDatabase: .
offerThroughput int Új kiosztott átviteli sebesség, amelyet az adatbázison szeretne beállítani, ha az adatbázis adatbázisszintű átviteli sebességet használ
autoScaleSettings Object Az automatikus skálázási módhoz szükséges. Ez az objektum az automatikus skálázási kapacitás módhoz társított beállításokat tartalmazza. Beállíthatja azt az maxThroughput értéket, amely az adatbázis dinamikusan növelhető kérelemegységeinek legnagyobb számát írja le.

Ez a parancs a munkamenet kontextusában megadott adatbázist használja. Ez az adatbázis ugyanaz, mint amelyet a use <database> parancsban használt. Az adatbázis neve jelenleg nem módosítható ezzel a paranccsal.

Hozam

Ha a parancs sikeres, a következő választ adja vissza:

{ "ok" : 1 }

Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: Az adatbázishoz társított kiosztott átviteli sebesség frissítése

Ha egy adatbázis "test" kiosztott átviteli sebességét 1200 kérelemegységre szeretné frissíteni, használja a következő parancsot:

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

Példa: Az adatbázishoz társított automatikus skálázási átviteli sebesség frissítése

Ha egy adatbázis "test" kiosztott átviteli sebességét 20 000 kérelemegységre szeretné frissíteni, vagy automatikus skálázási átviteli sebességre szeretné átalakítani, használja a következő parancsot:

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

Adatbázis lekérése

Az adatbázis-bővítmény lekérése parancs visszaadja az adatbázis-objektumot. A rendszer az adatbázis nevét abból az adatbázis-környezetből használja, amelyen a parancs végrehajtása történik.

{
  customAction: "GetDatabase"
}

Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Leírás
customAction string Az egyéni parancs neve. Az értéknek a következőnek kell lennie GetDatabase: .

Hozam

Ha a parancs sikeres, a válasz egy dokumentumot tartalmaz a következő mezőkkel:

Mező Típus Leírás
ok int A válasz állapota. 1 == siker. 0 == hiba.
database string Az adatbázis neve.
provisionedThroughput int Az adatbázison beállított kiépített átviteli sebesség, ha az adatbázis manuális adatbázisszintű átviteli sebességet használ
autoScaleSettings Object Ez az objektum tartalmazza az adatbázishoz társított kapacitásparamétereket, ha automatikus skálázási módot használ. Az maxThroughput érték azt a legtöbb kérelemegységet írja le, amellyel az adatbázis dinamikusan növelhető.

Ha a parancs sikertelen, a rendszer egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: Az adatbázis lekérése

Az adatbázis-objektum lekéréséhez "test"használja a következő parancsot:

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

Ha az adatbázis nem rendelkezik társított átviteli sebességgel, a kimenet a következő lesz:

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

Ha az adatbázishoz adatbázisszintű manuális átviteli sebesség van társítva, a kimenet a provisionedThroughput következő értékeket jeleníti meg:

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

Ha az adatbázishoz adatbázisszintű automatikus skálázási átviteli sebesség van társítva, a kimenet az adatbázis minimális RU/s-ját leíró értéket és az autoScaleSettings adatbázis maximális RU/s-ját leíró objektumot maxThroughputjeleníti provisionedThroughputmeg.

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

Gyűjtemény létrehozása

A gyűjteménybővítmény létrehozása parancs létrehoz egy új MongoDB-gyűjteményt. Az adatbázis nevét a parancs által beállított adatbázis-környezetből használja.use database A CreateCollection parancs formátuma a következő:

{
  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).
}

Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Kötelező Leírás
customAction string Kötelező Az egyéni parancs neve. Az értéknek a következőnek kell lennie CreateCollection: .
collection string Kötelező A gyűjtemény neve. Nem engedélyezett speciális karakterek vagy szóközök használata.
offerThroughput int Választható Kiosztott átviteli sebesség az adatbázison való beállításhoz. Ha ez a paraméter nincs megadva, alapértelmezés szerint a minimum 400 RU/s lesz. * A 10 000 RU/s-on túli átviteli sebesség megadásához a shardKey paraméterre van szükség.
shardKey string Nagy átviteli sebességgel rendelkező gyűjteményekhez szükséges A szegmenses gyűjtemény szegmenskulcsának elérési útja. Ez a paraméter akkor szükséges, ha több mint 10 000 RU/s offerThroughputértéket ad meg. Ha meg van adva, minden beszúrt dokumentumhoz szükség van erre a kulcsra és értékre.
autoScaleSettings Object Automatikus skálázási módhoz szükséges Ez az objektum az automatikus skálázási kapacitás módhoz társított beállításokat tartalmazza. Beállíthatja azt az maxThroughput értéket, amely a gyűjtemény dinamikusan növelhető kérelemegységeinek legnagyobb számát írja le.
indexes Array Igény szerint konfigurálhatja az indexeket. Ez a paraméter csak 3,6-os vagy több fiók esetén támogatott. Ha jelen van, indexre van szükség a _id. A tömb minden bejegyzésének tartalmaznia kell egy vagy több mező kulcsát, egy nevet, és tartalmazhat indexbeállításokat. Ha például összetett egyedi indexet szeretne létrehozni a mezőkön a , és b használja ezt a bejegyzést: {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true}.

Hozam

Egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: Gyűjtemény létrehozása a minimális konfigurációval

Ha új gyűjteményt szeretne létrehozni névvel "testCollection" és alapértelmezett értékekkel, használja a következő parancsot:

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

Ez a művelet egy új rögzített, skálázatlan gyűjteményt eredményez 400RU/s-val, és automatikusan létrejön egy index a _id mezőn. Ez a konfigurációtípus akkor is érvényes, ha új gyűjteményeket hoz létre a insert() függvényen keresztül. Példa:

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

Példa: Szegmens nélküli gyűjtemény létrehozása

Ha 1000 kérelemegység névvel "testCollection" és kiosztott átviteli sebességgel rendelkező szegmens nélküli gyűjteményt szeretne létrehozni, használja a következő parancsot:

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

Akár 10 000 RU/s-os offerThroughput gyűjteményt is létrehozhat anélkül, hogy szegmenskulcsot kellene megadnia. A nagyobb átviteli sebességgel rendelkező gyűjtemények esetében tekintse meg a következő szakaszt.

Példa: Szegmenses gyűjtemény létrehozása

Ha egy 11 000 kérelemegységet tartalmazó, 11 000 kérelemegységet "testCollection" és shardkey egy "a.b" tulajdonságot tartalmazó szegmenses gyűjteményt szeretne létrehozni, használja a következő parancsot:

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

Ehhez a parancshoz most már szükség van a shardKey paraméterre, mivel a paraméterben offerThroughputtöbb mint 10 000 RU/s van megadva.

Példa: Horizontálisan el nem skálázott automatikus skálázási gyűjtemény létrehozása

Ha egy 4000 RU/s-ra beállított automatikus skálázási átviteli kapacitást használó, szegmens nélküli gyűjteményt 'testCollection' szeretne létrehozni, használja a következő parancsot:

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

autoScaleSettings.maxThroughput Az értékhez 4000 RU/s és 10 000 RU/s közötti tartományt adhat meg szegmenskulcs nélkül. A nagyobb automatikus skálázási teljesítmény érdekében meg kell adnia a paramétert shardKey .

Példa: Horizontális automatikus skálázási gyűjtemény létrehozása

Ha egy 20 000 RU/s értékű automatikus skálázási átviteli kapacitást használó szegmenskulccsal 'a.b'elnevezett 'testCollection' szegmensgyűjteményt szeretne létrehozni, használja a következő parancsot:

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

Frissítési gyűjtemény

A frissítésgyűjtemény bővítmény parancsa frissíti a megadott gyűjteményhez társított tulajdonságokat. A gyűjteményt a kiosztott átviteli sebességről automatikus skálázásra módosíthatja, és fordítva, csak az Azure Portalon támogatott.

{
  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).
}

Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Leírás
customAction string Az egyéni parancs neve. Az értéknek a következőnek kell lennie UpdateCollection: .
collection string A gyűjtemény neve.
offerThroughput int Kiosztott átviteli sebesség a gyűjteményen való beállításhoz.
autoScaleSettings Object Az automatikus skálázási módhoz szükséges. Ez az objektum az automatikus skálázási kapacitás módhoz társított beállításokat tartalmazza. Az maxThroughput érték azt a legtöbb kérelemegységet írja le, amellyel a gyűjtemény dinamikusan növelhető.
indexes Array Igény szerint konfigurálhatja az indexeket. Ez a paraméter csak 3,6-os vagy több fiók esetén támogatott. Jelen esetben a megadott indexek készlete (beleértve az indexek elvetése) lecseréli a gyűjtemény meglévő indexeit. Indexre van szükség a _id. A tömb minden bejegyzésének tartalmaznia kell egy vagy több mező kulcsát, egy nevet, és tartalmazhat indexbeállításokat. Ha például egy összetett egyedi indexet szeretne létrehozni az a és b mezőkben, használja a következő bejegyzést: {key: {a: 1, b: 1}, name: "a_1_b_1", unique: true}.

Hozam

Egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: A gyűjteményhez társított kiosztott átviteli sebesség frissítése

Ha egy gyűjtemény "testCollection" kiosztott átviteli sebességét 1200 kérelemegységre szeretné frissíteni, használja a következő parancsot:

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

Gyűjtemény lekérése

Az egyéni gyűjtemény lekérése parancs visszaadja a gyűjteményobjektumot.

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

Az alábbi táblázat a parancs paramétereit ismerteti:

Mező Típus Leírás
customAction string Az egyéni parancs neve. Az értéknek a következőnek kell lennie GetCollection: .
collection string A gyűjtemény neve.

Hozam

Ha a parancs sikeres, a válasz tartalmaz egy dokumentumot a következő mezőkkel

Mező Típus Leírás
ok int A válasz állapota. 1 == siker. 0 == hiba.
database string Az adatbázis neve.
collection string A gyűjtemény neve.
shardKeyDefinition document Szilánkkulcsként használt index-specifikációs dokumentum. Ez a mező nem kötelező válaszparaméter.
provisionedThroughput int Kiosztott átviteli sebesség a gyűjteményen való beállításhoz. Ez a mező nem kötelező válaszparaméter.
autoScaleSettings Object Ez az objektum tartalmazza az adatbázishoz társított kapacitásparamétereket, ha automatikus skálázási módot használ. Az maxThroughput érték azt a legtöbb kérelemegységet írja le, amellyel a gyűjtemény dinamikusan növelhető.

Ha a parancs sikertelen, a rendszer egy alapértelmezett egyéni parancsválaszt ad vissza. Tekintse meg az egyéni parancs alapértelmezett kimenetét a kimenet paramétereihez.

Példa: A gyűjtemény lekérése

A gyűjtemény objektumának lekéréséhez "testCollection"használja a következő parancsot:

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

Ha a gyűjteményhez társított átviteli kapacitás van, akkor az provisionedThroughput értéket is tartalmazza, és a kimenet a következő lesz:

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

Ha a gyűjteményhez társított automatikus skálázási átviteli sebesség tartozik, akkor a autoScaleSettings paraméterrel rendelkező maxThroughput objektumot is tartalmazza, amely meghatározza a gyűjtemény dinamikusan növekvő maximális átviteli sebességét. Emellett tartalmazza az provisionedThroughput értéket is, amely meghatározza a gyűjtemény minimális átviteli sebességét, ha nincsenek kérések a gyűjteményben:

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

Ha a gyűjtemény adatbázisszintű átviteli sebességet oszt meg automatikus skálázási módban vagy manuális módon, a kimenet a következő lesz:

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

A változásstreamek párhuzamosítása

Ha nagy léptékű változásstreameket használ, a legjobb, ha egyenletesen elosztja a terhelést. A következő parancs egy vagy több változásfolyam-folytatási jogkivonatot ad vissza – mindegyik egy fizikai szegmensből/partícióból származó adatoknak felel meg (több logikai szegmens/partíció létezhet egy fizikai partíción). Minden folytatási jogkivonat miatt a watch() csak az adott fizikai szegmensből/partícióból ad vissza adatokat.

Minden db.collection.watch() folytatási jogkivonaton (jogkivonatonként egy szálon) használható a streamek hatékony skálázásához.

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

Példa: A stream jogkivonatának lekérése

Futtassa az egyéni parancsot az egyes fizikai szegmensek/partíciók önéletrajzi jogkivonatának lekéréséhez.

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

Futtasson egy watch() szálat/folyamatot a GetChangeStreamTokens egyéni parancsból visszaadott minden önéletrajzi jogkivonathoz. Íme egy példa egy szálra.

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

A resumeAfter mezőben található dokumentum (érték) az önéletrajz jogkivonatát jelöli. A parancs watch() a GetChangeStreamTokens egyéni parancs futtatása óta az adott fizikai partícióról beszúrt, frissített vagy lecserélt összes dokumentumhoz egy átkot ad vissza. A visszaadott adatok mintája itt található.

{
  "_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")
  }
}

Minden visszaadott dokumentum tartalmaz egy önéletrajzi jogkivonatot (az egyes lapokhoz azonosak). Ezt az önéletrajz-jogkivonatot tárolni és újra használni kell, ha a szál/folyamat meghal. Ez az önéletrajzi jogkivonat onnan veszi fel a műveletet, ahol abbahagyta, és csak az adott fizikai partícióról fogad adatokat.

Egyéni parancs alapértelmezett kimenete

Ha nincs megadva, az egyéni válasz a következő mezőket tartalmazó dokumentumot tartalmaz:

Mező Típus Leírás
ok int A válasz állapota. 1 == siker. 0 == hiba.
code int Csak akkor ad vissza, ha a parancs meghiúsult (vagyis ok == 0). A MongoDB hibakódját tartalmazza. Ez a mező nem kötelező válaszparaméter.
errMsg string Csak akkor ad vissza, ha a parancs meghiúsult (vagyis ok == 0). Felhasználóbarát hibaüzenetet tartalmaz. Ez a mező nem kötelező válaszparaméter.

Példa:

{ "ok" : 1 }

Következő lépések

Ezután megismerheti az Alábbi Azure Cosmos DB-fogalmakat: