Verwenden von MongoDB-Erweiterungsbefehlen zum Verwalten von Daten in Azure Cosmos DB for MongoDB
GILT FÜR: MongoDB
Das folgende Dokument enthält die benutzerdefinierten Aktionsbefehle, die für Azure Cosmos DB for MongoDB spezifisch sind. Diese Befehle können zum Erstellen und Abrufen von Datenbankressourcen verwendet werden, die für das Azure Cosmos DB-Kapazitätsmodell spezifisch sind.
Durch die Verwendung von Azure Cosmos DB for MongoDB können Sie die gemeinsamen Nutzen von Azure Cosmos DB genießen. Zu diesen Nutzen gehören unter anderem:
- Globale Verteilung
- Automatisches horizontales Partitionieren
- Hohe Verfügbarkeit
- Wartezeitgarantien
- Verschlüsselung ruhender Daten
- Backups
Sie können diese Nutzen genießen und gleichzeitig Ihre Investitionen in Ihre vorhandene MongoDB-Anwendung[en] beibehalten. Sie können mit der Azure Cosmos DB for MongoDB mittels einem der Open-Source-MongoDB-Clienttreiber kommunizieren. Die Azure Cosmos DB for MongoDB ermöglicht die Verwendung vorhandener Clienttreiber, indem das MongoDB-Leitungsprotokoll eingehalten wird.
Protokollunterstützung für MongoDB
Azure Cosmos DB for MongoDB ist mit der MongoDB-Serverversion 4.0, 3.6 und 3.2 kompatibel. Weitere Informationen finden Sie unter „Unterstützte Features und Syntax“ in den Versionen 4.0, 3.6 und 3.2.
Die folgenden Erweiterungsbefehle erstellen und ändern Azure Cosmos DB-spezifische Ressourcen über Datenbankanforderungen:
- Erstellen der Datenbank
- Aktualisieren der Datenbank
- Abrufen der Datenbank
- Erstellen der Sammlung
- Aktualisieren der Sammlung
- Abrufen der Sammlung
Erstellen einer Datenbank
Mit dem Erweiterungsbefehl „CreateDatabase“ wird eine neue MongoDB-Datenbank erstellt. Der Name der Datenbank kann aus dem Datenbankkontext abgerufen verwendet, der mit dem Befehl use database
festgelegt wird. In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | Typ | BESCHREIBUNG |
---|---|---|
customAction |
string |
Der Name des benutzerdefinierten Befehls. Der Wert muss CreateDatabase sein. |
offerThroughput |
int |
Bereitgestellter Durchsatz, den Sie für die Datenbank festgelegt haben. Dieser Parameter ist optional. |
autoScaleSettings |
Object |
Für Modus „Autoskalierung“ erforderlich. Dieses Objekt enthält die mit dem Kapazitätsmodus „Autoskalierung“ festgelegten Einstellungen. Sie können den Wert maxThroughput einrichten, der die höchste Anzahl von Anforderungseinheiten angibt, auf welche die Sammlung dynamisch erhöht werden kann. |
Ausgabe
Wenn der Befehl erfolgreich ist, gibt er die folgende Antwort zurück:
{ "ok" : 1 }
Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Erstellen einer Datenbank
Um eine Datenbank mit dem Namen "test"
mit sämtlichen Standardwerten zu erstellen, verwenden Sie den folgenden Befehl:
use test
db.runCommand({customAction: "CreateDatabase"});
Dieser Befehl erstellt eine Datenbank ohne Durchsatz auf Datenbankebene. Dieser Vorgang bedeutet, dass die Sammlungen innerhalb dieser Datenbank die Menge an Durchsatz angeben müssen, den Sie benötigen.
Beispiel: Erstellen einer Datenbank mit Durchsatz
Um eine Datenbank mit dem Namen "test"
zu erstellen und einen auf Datenbankebene bereitgestellten Durchsatz von 1.000 RUs anzugeben, nutzen Sie den folgenden Befehl:
use test
db.runCommand({customAction: "CreateDatabase", offerThroughput: 1000 });
Dieser Befehl erstellt eine Datenbank und legt einen Durchsatz dafür fest. Alle Sammlungen innerhalb dieser Datenbank teilen sich den festgelegten Durchsatz, es sei denn, die Sammlungen werden mit einer bestimmten Durchsatzebene erstellt.
Beispiel: Erstellen einer Datenbank mit auf „Autoskalierung“ festgelegtem Durchsatz
Um eine Datenbank mit dem Namen "test"
zu erstellen und einen per Autoskalierung festgelegten maximalen Durchsatz von 20.000 RU/s auf Datenbankebene anzugeben, verwenden Sie den folgenden Befehl:
use test
db.runCommand({customAction: "CreateDatabase", autoScaleSettings: { maxThroughput: 20000 } });
Aktualisieren der Datenbank
Mit dem Erweiterungsbefehl „UpdateDatabase“ werden die Eigenschaften aktualisiert, die der angegebenen Datenbank zugeordnet sind. Das Ändern der Datenbank von bereitgestelltem Durchsatz zur Autoskalierung und umgekehrt wird nur im Azure-Portal unterstützt. In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | Typ | BESCHREIBUNG |
---|---|---|
customAction |
string |
Der Name des benutzerdefinierten Befehls. Der Wert muss UpdateDatabase sein. |
offerThroughput |
int |
Neuer bereitgestellter Durchsatz, den Sie für die Datenbank festlegen möchten, wenn die Datenbank Durchsatz auf Datenbankebene nutzt |
autoScaleSettings |
Object |
Für Modus „Autoskalierung“ erforderlich. Dieses Objekt enthält die mit dem Kapazitätsmodus „Autoskalierung“ festgelegten Einstellungen. Sie können den Wert maxThroughput einrichten, der die höchste Anzahl von Anforderungseinheiten angibt, auf welche die Datenbank dynamisch erhöht werden kann. |
Dieser Befehl verwendet die im Kontext der Sitzung angegebene Datenbank. Dies ist die gleiche Datenbank, die Sie im Befehl use <database>
verwendet haben. Momentan kann der Datenbankname mit diesem Befehl nicht geändert werden.
Ausgabe
Wenn der Befehl erfolgreich ist, gibt er die folgende Antwort zurück:
{ "ok" : 1 }
Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Aktualisieren des bereitgestellten Durchsatzes, der einer Datenbank zugeordnet ist
Verwenden Sie den folgenden Befehl, um den bereitgestellten Durchsatz einer Datenbank mit dem Namen "test"
auf 1.200 RUs zu aktualisieren:
use test
db.runCommand({customAction: "UpdateDatabase", offerThroughput: 1200 });
Beispiel: Aktualisieren des Durchsatzes für Autoskalierung, der einer Datenbank zugeordnet ist
Um den bereitgestellten Durchsatz einer Datenbank namens "test"
auf 20.000 RUs zu aktualisieren oder in eine Durchsatzebene mit Autoskalierung umzuwandeln, nutzen Sie den folgenden Befehl:
use test
db.runCommand({customAction: "UpdateDatabase", autoScaleSettings: { maxThroughput: 20000 } });
Abrufen der Datenbank
Mit dem Erweiterungsbefehl „GetDatabase“ wird das Datenbankobjekt zurückgegeben. Der Name der Datenbank wird aus dem Datenbankkontext abgerufen, unter dem der Befehl ausgeführt wird.
{
customAction: "GetDatabase"
}
In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | Typ | BESCHREIBUNG |
---|---|---|
customAction |
string |
Der Name des benutzerdefinierten Befehls. Der Wert muss GetDatabase sein. |
Ausgabe
Wenn der Befehl erfolgreich ist, enthält die Antwort ein Dokument mit den folgenden Feldern:
Feld | Typ | BESCHREIBUNG |
---|---|---|
ok |
int |
Status der Antwort. 1 == Erfolgreich. 0 == Fehler. |
database |
string |
Der Name der Datenbank. |
provisionedThroughput |
int |
Bereitgestellter Durchsatz, den Sie für die Datenbank festlegen möchten, wenn die Datenbank manuellen Durchsatz auf Datenbankebene nutzt |
autoScaleSettings |
Object |
Dieses Objekt enthält die Kapazitätsparameter, die der Datenbank zugeordnet sind, wenn der Autoskalierungsmodus verwendet wird. Der Wert maxThroughput beschreibt die höchste Anzahl von Anforderungseinheiten, auf welche die Datenbank dynamisch erhöht werden kann. |
Wenn der Befehl nicht erfolgreich ist, wird eine Standardantwort für den benutzerdefinierten Befehl zurückgegeben. Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Abrufen der Datenbank
Verwenden Sie den folgenden Befehl, um das Datenbankobjekt für eine Datenbank mit dem Namen "test"
abzurufen:
use test
db.runCommand({customAction: "GetDatabase"});
Wenn der Datenbank kein Durchsatz zugeordnet ist, lautet die Ausgabe wie folgt:
{ "database" : "test", "ok" : 1 }
Wenn der Datenbank ein manueller Durchsatz auf Datenbankebene zugeordnet ist, weist die Ausgabe diese provisionedThroughput
-Werte auf:
{ "database" : "test", "provisionedThroughput" : 20000, "ok" : 1 }
Wenn der Datenbank ein per Autoskalierung festgelegter Durchsatz auf Datenbankebene zugeordnet ist, enthält die Ausgabe provisionedThroughput
mit Angabe der minimalen RU/s für die Datenbank und autoScaleSettings
einschließlich maxThroughput
mit der Angabe der maximalen RU/s für die Datenbank.
{
"database" : "test",
"provisionedThroughput" : 2000,
"autoScaleSettings" : {
"maxThroughput" : 20000
},
"ok" : 1
}
Erstellen der Sammlung
Mit dem Erweiterungsbefehl „CreateCollection“ wird eine neue MongoDB-Sammlung erstellt. Der Name der Datenbank wird aus dem Datenbankkontext abgerufen, der mit dem Befehl use database
festgelegt wird. Das Format des Befehls „CreateCollection“ lautet:
{
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).
}
In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | type | Erforderlich | BESCHREIBUNG |
---|---|---|---|
customAction |
string |
Erforderlich | Der Name des benutzerdefinierten Befehls. Der Wert muss CreateCollection sein. |
collection |
string |
Erforderlich | Name der Sammlung Sonder- oder Leerzeichen sind unzulässig. |
offerThroughput |
int |
Optional | Bereitgestellter Durchsatz, der für die Datenbank festgelegt werden soll. Wenn dieser Parameter nicht angegeben wird, wird standardmäßig der Mindestwert von 400 RU/s verwendet. *Um einen Durchsatz über 10.000 RU/s hinaus anzugeben, ist der Parameter shardKey erforderlich. |
shardKey |
string |
Für Sammlungen mit hohem Durchsatz erforderlich | Der Pfad des Shardschlüssels für die horizontal partitionierte Sammlung. Dieser Parameter ist erforderlich, wenn Sie mehr als 10.000 RU/s in offerThroughput festlegen. Falls er angegeben ist, erfordern alle eingefügten Dokumente diesen Schlüssel und Wert. |
autoScaleSettings |
Object |
Für Modus „Autoskalierung“ erforderlich. | Dieses Objekt enthält die mit dem Kapazitätsmodus „Autoskalierung“ festgelegten Einstellungen. Sie können den Wert maxThroughput einrichten, der die höchste Anzahl von Anforderungseinheiten beschreibt, auf welche die Sammlung dynamisch erhöht werden kann. |
indexes |
Array |
Konfigurieren Sie optional Indizes. Dieser Parameter wird nur für Konten ab Version 3.6 unterstützt. | Sofern vorhanden, wird ein Index für _id benötigt. Jeder Eintrag im Array muss einen Schlüssel aus einem oder mehreren Feldern, einen Namen und optional Indexoptionen enthalten. Verwenden Sie beispielsweise diesen Eintrag, um einen zusammengesetzten eindeutigen Index für die Felder a und b zu erstellen: {key: {a: 1, b: 1}, name:"a_1_b_1", unique: true} . |
Output
Gibt eine Standardantwort für den benutzerdefinierten Befehl zurück. Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Erstellen einer Sammlung mit der Mindestkonfiguration
Um eine neue Sammlung mit dem Namen "testCollection"
und den Standardwerten zu erstellen, geben Sie den folgenden Befehl an:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection"});
Das Ergebnis ist eine neue feste Sammlung ohne horizontale Partitionierung mit 400 RU/s und einem automatisch erstellten Index für das Feld _id
. Diese Art der Konfiguration gilt auch bei der Erstellung neuer Sammlungen über die Funktion insert()
. Zum Beispiel:
use test
db.newCollection.insert({});
Beispiel: Erstellen einer Sammlung ohne horizontale Partitionierung
Um eine Sammlung ohne horizontale Partitionierung mit dem Namen "testCollection"
und einem bereitgestellten Durchsatz von 1000 RUs zu erstellen, verwenden Sie den folgenden Befehl:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 1000});
Sie können eine Sammlung mit bis zu 10.000 RU/s als offerThroughput
erstellen, ohne einen Shardschlüssel angeben zu müssen. Weitere Informationen zu Sammlungen mit größerem Durchsatz finden Sie im nächsten Abschnitt.
Beispiel: Erstellen einer Sammlung mit horizontaler Partitionierung
Verwenden Sie den folgenden Befehl, um eine Sammlung mit Shards mit dem Namen "testCollection"
, einem bereitgestellten Durchsatz von 11.000 RU/s und der shardkey
-Eigenschaft „a.b“ zu erstellen:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", offerThroughput: 11000, shardKey: "a.b" });
Dieser Befehl erfordert jetzt den Parameter shardKey
, da mehr als 10.000 RU/s in offerThroughput
angegeben sind.
Beispiel: Erstellen einer Sammlung mit Autoskalierung ohne horizontale Partitionierung
Um eine Sammlung ohne Shards namens 'testCollection'
zu erstellen, deren Durchsatzkapazität per Autoskalierung auf 4.000 RU/s festgelegt ist, verwenden Sie den folgenden Befehl:
use test
db.runCommand({
customAction: "CreateCollection", collection: "testCollection",
autoScaleSettings:{
maxThroughput: 4000
}
});
Für den Wert autoScaleSettings.maxThroughput
können Sie einen Bereich von 4.000 bis 10 000 RU/s ohne Datenbank-Shard-Schlüssel angeben. Für einen höheren Durchsatz bei der Autoskalierung müssen Sie den Parameter shardKey
angeben.
Beispiel: Erstellen einer Sammlung mit Autoskalierung mit horizontaler Partitionierung
Um eine Sammlung mit Shards namens 'testCollection'
mit dem Shardschlüssel 'a.b'
zu erstellen, deren Durchsatzkapazität per Autoskalierung auf 20.000 RU/s festgelegt ist, verwenden Sie den folgenden Befehl:
use test
db.runCommand({customAction: "CreateCollection", collection: "testCollection", shardKey: "a.b", autoScaleSettings: { maxThroughput: 20000 }});
Aktualisieren der Sammlung
Mit dem Erweiterungsbefehl „UpdateCollection“ werden die Eigenschaften aktualisiert, die der angegebenen Sammlung zugeordnet sind. Das Ändern der Sammlung von bereitgestelltem Durchsatz zur Autoskalierung und umgekehrt wird nur im Azure-Portal unterstützt.
{
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).
}
In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | Typ | BESCHREIBUNG |
---|---|---|
customAction |
string |
Der Name des benutzerdefinierten Befehls. Der Wert muss UpdateCollection sein. |
collection |
string |
Name der Sammlung |
offerThroughput |
int |
Bereitgestellter Durchsatz, der für die Sammlung festgelegt wird. |
autoScaleSettings |
Object |
Für Modus „Autoskalierung“ erforderlich. Dieses Objekt enthält die mit dem Kapazitätsmodus „Autoskalierung“ festgelegten Einstellungen. Der Wert maxThroughput beschreibt die höchste Anzahl von Anforderungseinheiten, auf welche die Sammlung dynamisch erhöht werden kann. |
indexes |
Array |
Konfigurieren Sie optional Indizes. Dieser Parameter wird nur für Konten ab Version 3.6 unterstützt. Wenn vorhanden, ersetzt der angegebene Satz von Indizes (einschließlich Löschindizes) die vorhandenen Indizes der Auflistung. Es wird ein Index für _id benötigt. Jeder Eintrag im Array muss einen Schlüssel aus einem oder mehreren Feldern, einen Namen und optional Indexoptionen enthalten. Verwenden Sie beispielsweise diesen Eintrag, um einen zusammengesetzten eindeutigen Index für die Felder a und b zu erstellen: {key: {a: 1, b: 1}, name: "a_1_b_1", unique: true} . |
Ausgabe
Gibt eine Standardantwort für den benutzerdefinierten Befehl zurück. Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Aktualisieren des bereitgestellten Durchsatzes, der einer Sammlung zugeordnet ist
Verwenden Sie den folgenden Befehl, um den bereitgestellten Durchsatz einer Sammlung mit dem Namen "testCollection"
auf 1.200 RU/s zu aktualisieren:
use test
db.runCommand({customAction: "UpdateCollection", collection: "testCollection", offerThroughput: 1200 });
Abrufen der Sammlung
Mit dem benutzerdefinierten Befehl „GetCollection“ wird das Sammlungsobjekt zurückgegeben.
{
customAction: "GetCollection",
collection: "<Name of the collection>"
}
In der folgenden Tabelle sind die Parameter des Befehls beschrieben:
Feld | Typ | BESCHREIBUNG |
---|---|---|
customAction |
string |
Der Name des benutzerdefinierten Befehls. Der Wert muss GetCollection sein. |
collection |
string |
Name der Sammlung |
Ausgabe
Wenn der Befehl erfolgreich ist, enthält die Antwort ein Dokument mit den folgenden Feldern:
Feld | Typ | BESCHREIBUNG |
---|---|---|
ok |
int |
Status der Antwort. 1 == Erfolgreich. 0 == Fehler. |
database |
string |
Der Name der Datenbank. |
collection |
string |
Name der Sammlung |
shardKeyDefinition |
document |
Dokument mit Indexspezifikation zur Verwendung als Shardschlüssel. Dieses Feld ist ein optionaler Antwortparameter. |
provisionedThroughput |
int |
Bereitgestellter Durchsatz, der für die Sammlung festgelegt werden soll. Dieses Feld ist ein optionaler Antwortparameter. |
autoScaleSettings |
Object |
Dieses Objekt enthält die Kapazitätsparameter, die der Datenbank zugeordnet sind, wenn der Autoskalierungsmodus verwendet wird. Der Wert maxThroughput beschreibt die höchste Anzahl von Anforderungseinheiten, auf welche die Sammlung dynamisch erhöht werden kann. |
Wenn der Befehl nicht erfolgreich ist, wird eine Standardantwort für den benutzerdefinierten Befehl zurückgegeben. Informationen hierzu finden Sie in der Standardausgabe des benutzerdefinierten Befehls für die Parameter in der Ausgabe.
Beispiel: Abrufen der Sammlung
Verwenden Sie den folgenden Befehl, um das Sammlungsobjekt für eine Sammlung mit dem Namen "testCollection"
abzurufen:
use test
db.runCommand({customAction: "GetCollection", collection: "testCollection"});
Wenn der Sammlung eine Durchsatzkapazität zugeordnet ist, enthält sie den Wert provisionedThroughput
, und die Ausgabe wäre wie folgt:
{
"database" : "test",
"collection" : "testCollection",
"provisionedThroughput" : 400,
"ok" : 1
}
Wenn die Sammlung einen per Autoskalierung zugewiesenen Durchsatz hat, enthält sie das Objekt autoScaleSettings
mit dem Parameter maxThroughput
, der den maximalen Durchsatz definiert, auf den die Sammlung dynamisch erhöht wird. Zusätzlich enthält sie auch den Wert provisionedThroughput
, der den Mindestdurchsatz bestimmt, auf den diese Sammlung reduziert wird, wenn keine Anforderungen in der Sammlung vorhanden sind:
{
"database" : "test",
"collection" : "testCollection",
"provisionedThroughput" : 1000,
"autoScaleSettings" : {
"maxThroughput" : 10000
},
"ok" : 1
}
Wenn die Sammlung einen Durchsatz auf Datenbankebene gemeinsam nutzt, entweder im Modus „Autoskalierung“ oder manuell, lautet die Ausgabe so:
{ "database" : "test", "collection" : "testCollection", "ok" : 1 }
{
"database" : "test",
"provisionedThroughput" : 2000,
"autoScaleSettings" : {
"maxThroughput" : 20000
},
"ok" : 1
}
Parallelisieren von Änderungsdatenströmen
Wenn Sie Änderungsdatenströme im großen Stil verwenden, ist es am besten, die Last gleichmäßig zu verteilen. Der folgende Befehl gibt mindestens ein Token zum Fortsetzen des Änderungsdatenstroms zurück – jedes Token entspricht den Daten aus einem einzelnen physischen Datenbank-Shard/einer einzelnen Partition (es können mehrere logische Datenbank-Shards/Partitionen auf einer physischen Partition vorhanden sein). Jedes Fortsetzungstoken führt dazu, dass watch() nur Daten von diesem physischen Datenbank-Shard/dieser Partition zurückgibt.
Verwenden Sie db.collection.watch()
für jedes Fortsetzungstoken (ein Thread pro Token), um Änderungsdatenströme effizient zu skalieren.
{
customAction: "GetChangeStreamTokens",
collection: "<Name of the collection>",
startAtOperationTime: "<BSON Timestamp>" // Optional. Defaults to the time the command is run.
}
Beispiel: Abrufen des Streamtokens
Führen Sie den benutzerdefinierten Befehl aus, um ein Fortsetzungstoken für jeden physischen Shard/jede physische Partition abzurufen.
use test
db.runCommand({customAction: "GetChangeStreamTokens", collection: "<Name of the collection>"})
Führen Sie einen watch()-Thread oder -Prozess für jedes Fortsetzungstoken aus, das vom benutzerdefinierten GetChangeStreamTokens-Befehl zurückgegeben wird. Hier ist ein Beispiel für einen Thread.
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)}})
Das Dokument (der Wert) im Feld „resumeAfter“ stellt das Fortsetzungstoken dar. Der Befehl watch()
gibt einen Cursor für alle Dokumente zurück, die seit der Ausführung des benutzerdefinierten GetChangeStreamTokens-Befehls für diese physische Partition eingefügt, aktualisiert oder ersetzt wurden. Ein Beispiel der zurückgegebenen Daten ist hier enthalten.
{
"_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")
}
}
Jedes zurückgegebene Dokument enthält ein Fortsetzungstoken (diese sind für jede Seite identisch). Dieses Fortsetzungstoken sollte gespeichert und wiederverwendet werden, wenn der Thread/Prozess vorzeitig beendet wird. Dieses Fortsetzungstoken setzt den Vorgang an der Stelle fort, an der er unterbrochen wurde, und empfängt nur Daten von dieser physischen Partition.
Standardausgabe eines benutzerdefinierten Befehls
Wenn nichts anderes angegeben ist, enthält eine benutzerdefinierte Antwort ein Dokument mit den folgenden Feldern:
Feld | Typ | BESCHREIBUNG |
---|---|---|
ok |
int |
Status der Antwort. 1 == Erfolgreich. 0 == Fehler. |
code |
int |
Wird nur zurückgegeben, wenn der Befehl nicht erfolgreich ist (d. h. ok == 0). Enthält den MongoDB-Fehlercode. Dieses Feld ist ein optionaler Antwortparameter. |
errMsg |
string |
Wird nur zurückgegeben, wenn der Befehl nicht erfolgreich ist (d. h. ok == 0). Enthält eine benutzerfreundliche Fehlermeldung. Dieses Feld ist ein optionaler Antwortparameter. |
Beispiel:
{ "ok" : 1 }
Nächste Schritte
Sie können sich nun über die folgenden Azure Cosmos DB-Konzepte informieren: