použití příkazů rozšíření MongoDB ke správě dat uložených v rozhraní API Azure Cosmos DB pro MongoDB

PLATÍ pro: Azure Cosmos DB API pro MongoDB

následující dokument obsahuje příkazy vlastní akce, které jsou specifické pro rozhraní API Azure Cosmos DB pro MongoDB. tyto příkazy lze použít k vytvoření a získání databázových prostředků, které jsou specifické pro model Azure Cosmos DB kapacity.

díky rozhraní API Azure Cosmos DB pro MongoDB můžete využívat výhod Cosmos DB, jako je globální distribuce, automatická horizontálního dělení, vysoká dostupnost, záruky latence, automatické, šifrování v klidovém režimu, zálohování a spousta dalších, a zároveň zachovat investice do vaší aplikace MongoDB. můžete komunikovat s rozhraním API Azure Cosmos DB pro MongoDB pomocí kteréhokoli z open-source klientských ovladačů MongoDB. rozhraní API pro Azure Cosmos DB pro MongoDB umožňuje použití existujících ovladačů klientů, které dodržuje MongoDB síťový protokol.

Podpora protokolu MongoDB

rozhraní API Azure Cosmos DB pro MongoDB je kompatibilní s MongoDB serverem verze 4,0, 3,6 a 3,2. Další podrobnosti najdete v článku podporované funkce a syntaxe v článcích 4,0, 3,6a 3,2 .

následující příkazy rozšíření poskytují možnost vytvářet a upravovat prostředky specifické pro Azure Cosmos DB přes požadavky databáze:

Vytvořit databázi

Příkaz vytvořit rozšíření databáze vytvoří novou databázi MongoDB. Název databáze lze použít z kontextu databáze nastaveného use database příkazem. Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Popis
customAction string Název vlastního příkazu musí být "CreateDatabase".
offerThroughput int Zřízená propustnost, kterou jste nastavili v databázi. Tento parametr je volitelný.
autoScaleSettings Object Vyžaduje se pro režim automatického škálování. Tento objekt obsahuje nastavení přidružená k režimu kapacity automatického škálování. Můžete nastavit maxThroughput hodnotu, která popisuje nejvyšší množství jednotek požadavků, na které se kolekce zvyšuje dynamicky.

Výstup

Pokud bude příkaz úspěšný, vrátí následující odpověď:

{ "ok" : 1 }

Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Vytvoření databáze

K vytvoření databáze s názvem "test" , která používá všechny výchozí hodnoty, použijte následující příkaz:

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

Tento příkaz vytvoří databázi bez propustnosti na úrovni databáze. To znamená, že kolekce v rámci této databáze budou potřebovat určení množství propustnosti, kterou potřebujete použít.

Vytvoření databáze s propustností

K vytvoření databáze s názvem "test" a k určení propustnosti 1000 ru na úrovni databáze použijte následující příkaz:

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

Tím se vytvoří databáze a nastaví se její propustnost. Všechny kolekce v rámci této databáze budou sdílet propustnost, pokud se kolekce nevytváří s určitou úrovní propustnosti.

Vytvoření databáze s propustností automatického škálování

K vytvoření databáze s názvem "test" a k určení propustnosti maximálního automatického škálování 20 000 ru/s na úrovni databázepoužijte následující příkaz:

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

Aktualizovat databázi

Příkaz aktualizovat databázi rozšíření aktualizuje vlastnosti přidružené k zadané databázi. Změna databáze ze zřízené propustnosti na automatické škálování a naopak se podporuje jenom na webu Azure Portal. Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Popis
customAction string Název vlastního příkazu Musí být "UpdateDatabase".
offerThroughput int Nová zřízená propustnost, kterou chcete nastavit v databázi, pokud databáze používá propustnost na úrovni databáze .
autoScaleSettings Object Vyžaduje se pro režim automatického škálování. Tento objekt obsahuje nastavení přidružená k režimu kapacity automatického škálování. Můžete nastavit maxThroughput hodnotu, která popisuje nejvyšší množství jednotek požadavků, na které se bude databáze zvyšovat dynamicky.

Tento příkaz používá databázi zadanou v kontextu relace. To je databáze, kterou jste použili v use <database> příkazu. V tuto chvíli není možné změnit název databáze pomocí tohoto příkazu.

Výstup

Pokud bude příkaz úspěšný, vrátí následující odpověď:

{ "ok" : 1 }

Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Aktualizace zřízené propustnosti přidružené k databázi

K aktualizaci zřízené propustnosti databáze s názvem "test" na 1200 ru použijte následující příkaz:

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

Aktualizace propustnosti automatického škálování přidruženého k databázi

Chcete-li aktualizovat zřízenou propustnost databáze s názvem "test" na 20 000 ru nebo ji transformovat na úroveň propustnosti automatického škálování, použijte následující příkaz:

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

Získat databázi

Příkaz Get Database Extension vrátí objekt databáze. Název databáze je použit z kontextu databáze, proti kterému je příkaz spuštěn.

{
  customAction: "GetDatabase"
}

Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Popis
customAction string Název vlastního příkazu Musí být "getdatabase"

Výstup

Pokud je příkaz úspěšný, odpověď obsahuje dokument s následujícími poli:

Pole Typ Popis
ok int Stav odpovědi 1 = = úspěch. 0 = = chyba.
database string Název databáze.
provisionedThroughput int Zřízená propustnost, která je nastavena v databázi, pokud databáze používá Ruční propustnost na úrovni databáze
autoScaleSettings Object Tento objekt obsahuje parametry kapacity přidružené k databázi, pokud používá režim automatického škálování. maxThroughputHodnota popisuje nejvyšší množství jednotek požadavků, které se databáze zvýší na dynamicky.

Pokud příkaz neproběhne úspěšně, vrátí se výchozí odpověď vlastního příkazu. Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Získat databázi

Chcete-li získat objekt databáze pro databázi s názvem "test" , použijte následující příkaz:

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

Pokud databáze nemá žádnou přidruženou propustnost, výstup by byl:

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

Pokud má databáze přidruženou Ruční propustnost na úrovni databáze , zobrazí výstup tyto provisionedThroughput hodnoty:

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

Pokud má databáze přidruženou propustnost automatického škálování na úrovni databáze , výstup by zobrazil provisionedThroughput , který popisuje minimální ru/s pro databázi, a autoScaleSettings objekt maxThroughput , včetně, který popisuje maximální ru/s pro databázi.

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

Vytvořit kolekci

Příkaz vytvořit rozšíření kolekce vytvoří novou kolekci MongoDB. Název databáze se používá z kontextu databáze nastaveného use database příkazem. Formát příkazu Vytvořitcollection je následující:

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

Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Povinné Popis
customAction string Vyžadováno Název vlastního příkazu Musí být "Vytvořitcollection".
collection string Vyžadováno Název kolekce Nejsou povoleny žádné speciální znaky ani mezery.
offerThroughput int Volitelné Zřízená propustnost pro nastavení databáze. Pokud tento parametr není zadán, bude výchozí hodnota minimálně 400 RU/s. * Pokud chcete zadat propustnost přesahující 10 000 RU/s, shardKey parametr je povinný.
shardKey string Vyžadováno pro kolekce s velkou propustností Cesta k horizontálních oddílůmu klíči pro kolekci horizontálně dělené Tento parametr je vyžadován, pokud nastavíte více než 10 000 RU/s v offerThroughput . Pokud je zadáno, budou všechny vložené dokumenty vyžadovat tento klíč a hodnotu.
autoScaleSettings Object Vyžaduje se pro režim automatického škálování . Tento objekt obsahuje nastavení přidružená k režimu kapacity automatického škálování. Můžete nastavit maxThroughput hodnotu, která popisuje nejvyšší množství jednotek požadavků, na které se kolekce zvyšuje dynamicky.
indexes Array Volitelně můžete nakonfigurovat indexy. Tento parametr se podporuje jenom pro účty 3.6 +. Je-li k dispozici, je požadován index v _id. Každá položka v poli musí obsahovat klíč jednoho nebo více polí, název a může obsahovat možnosti indexu. Například, chcete-li vytvořit složený jedinečný index pro pole a a b použít tuto položku: {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true} .

Výstup

Vrátí výchozí odpověď vlastního příkazu. Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Vytvoření kolekce s minimální konfigurací

Chcete-li vytvořit novou kolekci s názvem "testCollection" a výchozími hodnotami, použijte následující příkaz:

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

Výsledkem bude, že se vytvoří nová pevná, unsharded, kolekce s 400RU/s a _id automaticky se vytvoří index pole. Tento typ konfigurace se použije také při vytváření nových kolekcí prostřednictvím insert() funkce. Například:

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

Vytvoření kolekce unsharded

Chcete-li vytvořit kolekci unsharded s názvem "testCollection" a zřízenou propustností 1000 ru, použijte následující příkaz:

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

Kolekci můžete vytvořit s až 10 000 RU/s, a to offerThroughput bez nutnosti zadat horizontálních oddílů klíč. Kolekce s větší propustností najdete v další části.

Vytvoření kolekce horizontálně dělené

Chcete-li vytvořit kolekci horizontálně dělené s názvem "testCollection" a zřízenou propustností 11 000 ru a shardkey vlastností "a. b", použijte následující příkaz:

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

Tento příkaz nyní vyžaduje shardKey parametr, protože více než 10 000 ru/s je zadáno v offerThroughput .

Vytvoření kolekce automatického škálování unsharded

Pokud chcete vytvořit kolekci unsharded s názvem 'testCollection' , která používá kapacitu propustnosti automatického škálování nastavenou na 4 000 ru/s, použijte následující příkaz:

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

Pro autoScaleSettings.maxThroughput hodnotu můžete zadat rozsah od 4 000 ru/s do 10 000 ru/s bez horizontálních oddílů klíče. Pro vyšší propustnost automatického škálování je nutné zadat shardKey parametr.

Vytvoření kolekce automatického škálování horizontálně dělené

Chcete-li vytvořit kolekci horizontálně dělené s názvem 'testCollection' s názvem horizontálních oddílů Key 'a.b' a s využitím kapacity propustnosti automatického škálování nastavenou na 20 000 ru/s, použijte následující příkaz:

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

Aktualizovat kolekci

Příkaz rozšíření kolekce aktualizací aktualizuje vlastnosti přidružené k zadané kolekci. Změna kolekce ze zřízené propustnosti na automatické škálování a naopak se podporuje jenom na webu Azure Portal.

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

Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Popis
customAction string Název vlastního příkazu Musí být "Updatecollection".
collection string Název kolekce
offerThroughput int Zřízená propustnost, která se má nastavit v kolekci
autoScaleSettings Object Vyžaduje se pro režim automatického škálování. Tento objekt obsahuje nastavení přidružená k režimu kapacity automatického škálování. maxThroughputHodnota popisuje nejvyšší množství jednotek požadavků, které bude kolekce zvyšovat na dynamicky.
indexes Array Volitelně můžete nakonfigurovat indexy. Tento parametr se podporuje jenom pro účty 3.6 +. Je-li k dispozici, stávající indexy kolekce jsou nahrazeny sadou zadaných indexů (včetně vyřazování indexů). Je vyžadován index v _id. Každá položka v poli musí obsahovat klíč jednoho nebo více polí, název a může obsahovat možnosti indexu. Chcete-li například vytvořit složený jedinečný index pro pole a a b, použijte tuto položku: {key: {a: 1, b: 1}, name: "a_1_b_1", unique: true} .

Výstup

Vrátí výchozí odpověď vlastního příkazu. Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Aktualizace zřízené propustnosti přidružené ke kolekci

K aktualizaci zřízené propustnosti kolekce s názvem "testCollection" na 1200 ru použijte následující příkaz:

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

Získat kolekci

Vlastní příkaz Get Collection vrátí objekt kolekce.

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

Následující tabulka popisuje parametry v rámci příkazu:

Pole Typ Popis
customAction string Název vlastního příkazu Musí být "GetCollection".
collection string Název kolekce

Výstup

Pokud je příkaz úspěšný, odpověď obsahuje dokument s následujícími poli

Pole Typ Popis
ok int Stav odpovědi 1 = = úspěch. 0 = = chyba.
database string Název databáze.
collection string Název kolekce
shardKeyDefinition document Dokument specifikace indexu použitý jako horizontálních oddílů klíč Toto je volitelný parametr odpovědi.
provisionedThroughput int Zřízená propustnost, která se má nastavit v kolekci Toto je volitelný parametr odpovědi.
autoScaleSettings Object Tento objekt obsahuje parametry kapacity přidružené k databázi, pokud používá režim automatického škálování. maxThroughputHodnota popisuje nejvyšší množství jednotek požadavků, které bude kolekce zvyšovat na dynamicky.

Pokud příkaz neproběhne úspěšně, vrátí se výchozí odpověď vlastního příkazu. Podívejte se na výchozí výstup vlastního příkazu pro parametry ve výstupu.

Příklady

Získat kolekci

Chcete-li získat objekt kolekce pro kolekci s názvem "testCollection" , použijte následující příkaz:

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

Pokud má kolekce přidruženou kapacitu propustnosti, bude obsahovat provisionedThroughput hodnotu a výstup bude:

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

Pokud má kolekce přidruženou propustnost automatického škálování, bude obsahovat autoScaleSettings objekt s maxThroughput parametrem, který definuje maximální propustnost, které se kolekce narůstá na dynamicky. Kromě toho bude také obsahovat provisionedThroughput hodnotu, která definuje minimální propustnost, které tato kolekce bude snižovat, pokud v kolekci neexistují žádné žádosti:

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

Pokud kolekce sdílí propustnost na úrovni databáze, buď v režimu automatického škálování, nebo ručně, výstup by byl:

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

Virtuálního datové proudy změn

Při používání změn ve velkém měřítku je nejlepší rovnoměrně rozprostře zatížení. Následující příkaz vrátí jeden nebo více datových proudů změny, které odpovídají datům z jednoho fyzického horizontálních oddílů nebo oddílu (v jednom fyzickém oddílu může existovat více logických horizontálních oddílů/oddílů). Každý token pro obnovení způsobí, že hodinky () vrátí data jenom z daného fyzického horizontálních oddílů nebo oddílu.

Volání DB. Collection. Watch () na každém tokenu Resume (jedno vlákno na token) bude efektivně škálovat streamy změny.

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

Příklad

Spusťte vlastní příkaz pro získání tokenu obnovení pro každý fyzický horizontálních oddílů nebo oddíl.

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

Spusťte proces kukátka () pro každý token pro obnovení vrácený z vlastního příkazu GetChangeStreamTokens. Níže je příklad jednoho vlákna.

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

Dokument (hodnota) v poli resumeAfter představuje token pro obnovení. Watch () vrátí rozdělovač pro všechny dokumenty vložené, aktualizované nebo nahrazené z tohoto fyzického oddílu, protože byl spuštěn vlastní příkaz GetChangeStreamTokens. Ukázka vrácených dat je následující.

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

Všimněte si, že každý vrácený dokument obsahuje token pro obnovení (všechny jsou stejné pro každou stránku). Tento token obnovení by měl být uložen a znovu použit, pokud vlákno nebo proces zemře. Tento token pro obnovení se vybere z místa, kde jste skončili, a příjem dat jenom z tohoto fyzického oddílu.

Výchozí výstup vlastního příkazu

Pokud tento parametr nezadáte, vlastní odpověď obsahuje dokument s následujícími poli:

Pole Typ Popis
ok int Stav odpovědi 1 = = úspěch. 0 = = chyba.
code int Vrátí se jenom v případě, že se příkaz nezdařil (tj. ok = = 0). Obsahuje kód chyby MongoDB. Toto je volitelný parametr odpovědi.
errMsg string Vrátí se jenom v případě, že se příkaz nezdařil (tj. ok = = 0). Obsahuje uživatelsky přívětivou chybovou zprávu. Toto je volitelný parametr odpovědi.

Například:

{ "ok" : 1 }

Další kroky

dále si můžete přečíst následující pojmy Azure Cosmos DB: