Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Möchten Sie eine vorhandene MongoDB-Anwendung migrieren oder MongoDB Query Language (MQL)-Features verwenden? Betrachten Sie Azure DocumentDB.
Suchen Sie nach einer Datenbanklösung für hochskalige Szenarien mit einer Vereinbarung über verfügbarkeitsbasierte Servicelevels (Service Level Agreement, SLA) von 99,999% Verfügbarkeit, sofortige Automatische Skalierung und automatisches Failover über mehrere Regionen hinweg? Erwägen Sie Azure Cosmos DB für NoSQL.
Mit Azure Cosmos DB für MongoDB 4.0 können Sie vertraute MongoDB-Features mit Funktionen auf Unternehmensniveau wie globaler Verteilung, automatischer Sharding und hoher Verfügbarkeit verwenden. In diesem Artikel werden die unterstützten Features, Syntax und Vorteile der Verwendung von Azure Cosmos DB für MongoDB 4.0 beschrieben.
Protokollunterstützung
Die unterstützten Operatoren und alle Einschränkungen oder Ausnahmen werden hier aufgeführt. Alle Clienttreiber, die diese Protokolle verstehen, sollten auch mit der API für Azure Cosmos DB for MongoDB eine Verbindung herstellen können. Wenn Sie Azure Cosmos DB for MongoDB-Konten erstellen, hat der Endpunkt bei der Kontoversion 3.6 und höher das Format *.mongo.cosmos.azure.com, während er bei der Kontoversion 3.2 das Format *.documents.azure.com hat.
Note
Dieser Artikel enthält nur die unterstützten Serverbefehle und keine clientseitigen Wrapperfunktionen. Für clientseitige Wrapperfunktionen, z. B. deleteMany() und updateMany(), werden intern die Serverbefehle delete() und update() genutzt. Funktionen, die unterstützte Serverbefehle nutzen, sind mit Azure Cosmos DB for MongoDB kompatibel.
Unterstützung der Abfragesprache
Azure Cosmos DB for MongoDB bietet umfassende Unterstützung für MongoDB-Abfragesprachkonstrukte. Hier finden Sie die detaillierte Liste der derzeit unterstützten Vorgänge, Operatoren, Stufen, Befehle und Optionen.
Datenbankbefehle
Azure Cosmos DB for MongoDB unterstützt die folgenden Datenbankbefehle:
Befehle für Abfrage- und Schreibvorgänge
| Supported | |
|---|---|
change streams |
Yes |
delete |
Yes |
eval |
✖️ Nein |
find |
Yes |
findAndModify |
Yes |
getLastError |
Yes |
getMore |
Yes |
getPrevError |
✖️ Nein |
insert |
Yes |
parallelCollectionScan |
✖️ Nein |
resetError |
✖️ Nein |
update |
Yes |
Transaktionsbefehle
| Supported | |
|---|---|
abortTransaction |
Yes |
commitTransaction |
Yes |
Authentifizierungsbefehle
| Supported | |
|---|---|
authenticate |
Yes |
getnonce |
Yes |
logout |
Yes |
Verwaltungsbefehle
| Supported | |
|---|---|
cloneCollectionAsCapped |
✖️ Nein |
collMod |
✖️ Nein |
connectionStatus |
✖️ Nein |
convertToCapped |
✖️ Nein |
copydb |
✖️ Nein |
create |
Yes |
createIndexes |
Yes |
currentOp |
Yes |
drop |
Yes |
dropDatabase |
Yes |
dropIndexes |
Yes |
filemd5 |
Yes |
killCursors |
Yes |
killOp |
✖️ Nein |
listCollections |
Yes |
listDatabases |
Yes |
listIndexes |
Yes |
reIndex |
Yes |
renameCollection |
✖️ Nein |
Diagnosebefehle
| Supported | |
|---|---|
buildInfo |
Yes |
collStats |
Yes |
connPoolStats |
✖️ Nein |
connectionStatus |
✖️ Nein |
dataSize |
✖️ Nein |
dbHash |
✖️ Nein |
dbStats |
Yes |
explain |
Yes |
features |
✖️ Nein |
hello |
Yes |
hostInfo |
Yes |
listDatabases |
Yes |
listCommands |
✖️ Nein |
profiler |
✖️ Nein |
serverStatus |
✖️ Nein |
top |
✖️ Nein |
whatsmyuri |
Yes |
Aggregationspipeline
Aggregationsbefehle
| Supported | |
|---|---|
aggregate |
Yes |
count |
Yes |
distinct |
Yes |
mapReduce |
✖️ Nein |
Aggregationsphasen
| Supported | |
|---|---|
addFields |
Yes |
bucket |
✖️ Nein |
bucketAuto |
✖️ Nein |
changeStream |
Yes |
collStats |
✖️ Nein |
count |
Yes |
currentOp |
✖️ Nein |
facet |
Yes |
geoNear |
Yes |
graphLookup |
Yes |
group |
Yes |
indexStats |
✖️ Nein |
limit |
Yes |
listLocalSessions |
✖️ Nein |
listSessions |
✖️ Nein |
lookup |
❓Teilweise |
match |
Yes |
out |
Yes |
project |
Yes |
redact |
Yes |
replaceRoot |
Yes |
replaceWith |
✖️ Nein |
sample |
Yes |
skip |
Yes |
sort |
Yes |
sortByCount |
Yes |
unwind |
Yes |
Note
$lookup unterstützt die in der Serverversion 3.6 eingeführte Funktion der nicht korrelierten Unterabfragen noch nicht. Sie erhalten eine Fehlermeldung mit einer Meldung, die enthält let is not supported , wenn Sie versuchen, den $lookup Operator mit let und pipeline Feldern zu verwenden.
Boolesche Ausdrücke
| Supported | |
|---|---|
and |
Yes |
not |
Yes |
or |
Yes |
Umwandlungsausdrücke
| Supported | |
|---|---|
convert |
Yes |
toBool |
Yes |
toDate |
Yes |
toDecimal |
Yes |
toDouble |
Yes |
toInt |
Yes |
toLong |
Yes |
toObjectId |
Yes |
toString |
Yes |
Set-Ausdrücke
| Supported | |
|---|---|
setEquals |
Yes |
setIntersection |
Yes |
setUnion |
Yes |
setDifference |
Yes |
setIsSubset |
Yes |
anyElementTrue |
Yes |
allElementsTrue |
Yes |
Vergleichsausdrücke
Note
Die API für MongoDB unterstützt keine Vergleichsausdrücke mit einem Array-Literal in der Abfrage.
| Supported | |
|---|---|
cmp |
Yes |
eq |
Yes |
gt |
Yes |
gte |
Yes |
lt |
Yes |
lte |
Yes |
ne |
Yes |
in |
Yes |
nin |
Yes |
Arithmetische Ausdrücke
| Supported | |
|---|---|
abs |
Yes |
add |
Yes |
ceil |
Yes |
divide |
Yes |
exp |
Yes |
floor |
Yes |
ln |
Yes |
log |
Yes |
log10 |
Yes |
mod |
Yes |
multiply |
Yes |
pow |
Yes |
sqrt |
Yes |
subtract |
Yes |
trunc |
Yes |
Zeichenfolgenausdrücke
| Supported | |
|---|---|
concat |
Yes |
indexOfBytes |
Yes |
indexOfCP |
Yes |
ltrim |
Yes |
rtrim |
Yes |
trim |
Yes |
split |
Yes |
strLenBytes |
Yes |
strLenCP |
Yes |
strcasecmp |
Yes |
substr |
Yes |
substrBytes |
Yes |
substrCP |
Yes |
toLower |
Yes |
toUpper |
Yes |
Operator für die Textsuche
| Supported | |
|---|---|
meta |
✖️ Nein |
Arrayausdrücke
| Supported | |
|---|---|
arrayElemAt |
Yes |
arrayToObject |
Yes |
concatArrays |
Yes |
filter |
Yes |
indexOfArray |
Yes |
isArray |
Yes |
objectToArray |
Yes |
range |
Yes |
reverseArray |
Yes |
reduce |
Yes |
size |
Yes |
slice |
Yes |
zip |
Yes |
in |
Yes |
Variablenoperatoren
| Supported | |
|---|---|
map |
Yes |
let |
Yes |
Systemvariablen
| Supported | |
|---|---|
$$CURRENT |
Yes |
$$DESCEND |
Yes |
$$KEEP |
Yes |
$$PRUNE |
Yes |
$$REMOVE |
Yes |
$$ROOT |
Yes |
Literaloperator
| Supported | |
|---|---|
literal |
Yes |
Datumsausdrücke
| Supported | |
|---|---|
dayOfYear |
Yes |
dayOfMonth |
Yes |
dayOfWeek |
Yes |
year |
Yes |
month |
Yes |
week |
Yes |
hour |
Yes |
minute |
Yes |
second |
Yes |
millisecond |
Yes |
dateToString |
Yes |
isoDayOfWeek |
Yes |
isoWeek |
Yes |
dateFromParts |
Yes |
dateToParts |
Yes |
dateFromString |
Yes |
isoWeekYear |
Yes |
Bedingte Ausdrücke
| Supported | |
|---|---|
cond |
Yes |
ifNull |
Yes |
switch |
Yes |
Datentypoperator
| Supported | |
|---|---|
type |
Yes |
Akkumulatorausdrücke
| Supported | |
|---|---|
sum |
Yes |
avg |
Yes |
first |
Yes |
last |
Yes |
max |
Yes |
min |
Yes |
push |
Yes |
addToSet |
Yes |
stdDevPop |
Yes |
stdDevSamp |
Yes |
Zusammenführungsoperator
| Supported | |
|---|---|
mergeObjects |
Yes |
Datentypen
Azure Cosmos DB für MongoDB unterstützt Dokumente, die im MongoDB-Binär-JSON-Format (BSON) codiert sind. Die API-Version 4.0 verbessert die interne Verwendung dieses Formats, um die Leistung zu verbessern und Kosten zu senken. Dokumente, die über einen Endpunkt mit 4.0 und höher geschrieben oder aktualisiert werden, profitieren von der Optimierung.
In einem Upgradeszenario auf Version 4.0 oder höher profitieren Dokumente, die vor dem Upgrade erstellt wurden, nicht sofort von der verbesserten Leistung. Aktualisieren Sie diese Dokumente mithilfe eines Schreibvorgangs mithilfe des 4.0-Endpunkts, um die Vorteile der Verbesserungen zu nutzen.
16 MB Dokumentunterstützung erhöht die Größenbeschränkung für Dokumente von 2 MB auf 16 MB. Dieser Grenzwert gilt nur für Sammlungen, die nach dem Aktivieren des Features erstellt wurden. Nachdem Sie dieses Feature für ein Datenbankkonto aktiviert haben, kann es nicht deaktiviert werden.
Das Aktivieren von 16 MB kann auf der Registerkarte "Features" im Azure-Portal oder programmgesteuert durch Hinzufügen der EnableMongo16MBDocumentSupport Funktion erfolgen.
Wir empfehlen, die serverseitige Wiederholung zu aktivieren und Platzhalterindizes zu vermeiden, um den Erfolg von Anfragen mit größeren Dokumenten sicherzustellen. Bei Bedarf kann die Erhöhung der Anfrageeinheiten für Datenbanken oder Sammlungen auch die Leistung verbessern.
| Supported | |
|---|---|
Double |
Yes |
String |
Yes |
Object |
Yes |
Array |
Yes |
Binary Data |
Yes |
ObjectId |
Yes |
Boolean |
Yes |
Date |
Yes |
Null |
Yes |
32-bit Integer (int) |
Yes |
Timestamp |
Yes |
64-bit Integer (long) |
Yes |
MinKey |
Yes |
MaxKey |
Yes |
Decimal128 |
Yes |
Regular Expression |
Yes |
JavaScript |
Yes |
JavaScript (with scope) |
Yes |
Undefined |
Yes |
Indizes und Indexeigenschaften
Indizes
| Supported | |
|---|---|
Single Field Index |
Yes |
Compound Index |
Yes |
Multikey Index |
Yes |
Text Index |
✖️ Nein |
2dsphere |
Yes |
2d Index |
✖️ Nein |
Hashed Index |
✖️ Nein |
Indexeigenschaften
| Supported | |
|---|---|
TTL |
Yes |
Unique |
Yes |
Partial |
✖️ Nein |
Case Insensitive |
✖️ Nein |
Sparse |
✖️ Nein |
Background |
Yes |
Betriebspersonal
Logische Operatoren
| Supported | |
|---|---|
or |
Yes |
and |
Yes |
not |
Yes |
nor |
Yes |
Elementoperatoren
| Supported | |
|---|---|
exists |
Yes |
type |
Yes |
Abfrageoperatoren für die Auswertung
| Supported | |
|---|---|
expr |
Yes |
jsonSchema |
✖️ Nein |
mod |
Yes |
regex |
Yes |
text |
✖️ Nein |
where |
✖️ Nein |
In $regex-Abfragen ermöglichen linksverankerte Ausdrücke eine Indexsuche. Die Verwendung des i-Modifizierers (Groß-/Kleinschreibung ignorierend) und des m-Modifizierers (mehrzeilig) bewirkt jedoch, dass die Durchsuchung der Sammlung in allen Ausdrücken erfolgt.
Wenn es erforderlich ist, $ oder | einzuschließen, ist es am besten, zwei (oder mehr) Regex-Abfragen zu erstellen. Die folgende ursprüngliche Abfrage find({x:{$regex: /^abc$/}) muss beispielsweise wie folgt geändert werden:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
Der erste Teil verwendet den Index, um die Suche auf diese Dokumente zu beschränken, beginnend mit ^abc und der zweite Teil entspricht den genauen Einträgen. Der Strichoperator | dient als „oder“-Funktion: Die Abfrage find({x:{$regex: /^abc |^def/}) stimmt die Dokumente ab, in denen das Feld x Werte enthält, die mit "abc" oder "def" beginnen. Um den Index zu verwenden, unterteilen Sie die Abfrage in zwei verschiedene Abfragen, die vom $or-Operator verknüpft sind: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Tip
Der text Befehl wird nicht unterstützt. Verwenden Sie stattdessen $regex.
Arrayoperatoren
| Supported | |
|---|---|
all |
Yes |
elemMatch |
Yes |
size |
Yes |
Kommentaroperator
| Supported | |
|---|---|
comment |
Yes |
Projektionsoperatoren
| Supported | |
|---|---|
elemMatch |
Yes |
meta |
✖️ Nein |
slice |
Yes |
Aktualisierungsoperatoren
Operatoren für die Feldaktualisierung
| Supported | |
|---|---|
inc |
Yes |
mul |
Yes |
rename |
Yes |
setOnInsert |
Yes |
set |
Yes |
unset |
Yes |
min |
Yes |
max |
Yes |
currentDate |
Yes |
Array-Aktualisierungsoperatoren
| Supported | |
|---|---|
$ |
Yes |
$[] |
Yes |
$[\<identifier\>] |
Yes |
addToSet |
Yes |
pop |
Yes |
pullAll |
Yes |
pull |
Yes |
push |
Yes |
pushAll |
Yes |
Modifikatoren aktualisieren
| Supported | |
|---|---|
each |
Yes |
slice |
Yes |
sort |
Yes |
position |
Yes |
Bitweiser Aktualisierungsoperator
| Supported | |
|---|---|
bit |
Yes |
bitsAllSet |
✖️ Nein |
bitsAnySet |
✖️ Nein |
bitsAllClear |
✖️ Nein |
bitsAnyClear |
✖️ Nein |
Geodätische Operatoren
| Supported | |
|---|---|
$geoWithin |
Yes |
$geoIntersects |
Yes |
$near |
Yes |
$nearSphere |
Yes |
$geometry |
Yes |
$minDistance |
Yes |
$maxDistance |
Yes |
$center |
✖️ Nein |
$centerSphere |
✖️ Nein |
$box |
✖️ Nein |
$polygon |
✖️ Nein |
Sortiervorgänge
Wenn Sie den Vorgang findOneAndUpdate mit der API für MongoDB (Version 4.0) verwenden, werden Sortiervorgänge für ein einzelnes Feld und mehrere Felder unterstützt. Sortiervorgänge über mehrere Felder waren eine Einschränkung früherer Wire-Protokolle.
Indizierung
Die API für MongoDB unterstützt verschiedene Indizes, um die Sortierung nach mehreren Feldern zu ermöglichen, die Abfrageleistung zu verbessern und Eindeutigkeit zu erzwingen.
GridFS
Azure Cosmos DB unterstützt GridFS über jeden GridFS-kompatiblen Mongo-Treiber.
Replikation
Azure Cosmos DB unterstützt die automatische, native Replikation auf den niedrigsten Ebenen. Diese Logik wird erweitert, um auch die globale Replikation mit geringer Latenz zu erreichen. Azure Cosmos DB unterstützt keine manuellen Replikationsbefehle.
Wiederholbare Schreibvorgänge
Wiederholbare Schreibvorgänge ermöglichen es MongoDB-Treibern, bestimmte Schreibvorgänge beim Auftreten eines Fehlers automatisch zu wiederholen. Das führt aber zu strengeren Anforderungen bei bestimmten Vorgängen, die den Anforderungen des MongoDB-Protokolls entsprechen. Wenn dieses Feature aktiviert ist, müssen Aktualisierungsvorgänge, einschließlich Löschvorgängen, in shardierten Sammlungen den Shardschlüssel in den Abfragefilter oder die Update-Anweisung einschließen.
Bei einer sharded-Auflistung wird z. B. auf Schlüssel regiongehardet: Um alle Dokumente mit dem Feld city = "NYC"zu löschen, muss die Anwendung den Vorgang für alle Shardschlüsselwerte (Region) ausführen, wenn wiederholungsfähige Schreibvorgänge aktiviert sind.
-
db.coll.deleteMany({"region": "USA", "city": "NYC"})- Erfolg mit NachrichtSuccess -
db.coll.deleteMany({"city": "NYC"})- Scheitert mit FehlerShardKeyNotFound(61)
Note
Wiederholbare Schreibvorgänge unterstützen derzeit keine großen ungeordneten Schreibvorgänge. Wenn Sie Massenschreibvorgänge mit Aktivierung wiederholbarer Schreibvorgänge durchführen möchten, führen Sie geordnete Massenschreibvorgänge durch.
Um das Feature zu aktivieren, fügen Sie die Funktion „EnableMongoRetryableWrites“ Ihrem Datenbankkonto hinzu. Dieses Feature kann auch im Azure-Portal auf der Registerkarte „Features“ aktiviert werden.
Sharding (horizontales Partitionieren)
Azure Cosmos DB unterstützt das automatische, serverseitige Sharding. Die Erstellung, die Platzierung und der Ausgleich von Shards wird automatisch verwaltet. Azure Cosmos DB unterstützt keine manuellen Shardingbefehle, was bedeutet, dass Sie keine solchen Befehle wie addShard, balancerStart und moveChunk ausführen müssen. Sie müssen beim Erstellen der Container oder Beim Abfragen der Daten nur den Shardschlüssel angeben.
Sitzungen
Azure Cosmos DB unterstützt noch nicht serverseitige Sitzungsbefehle.
Gültigkeitsdauer (TTL)
Azure Cosmos DB unterstützt eine Gültigkeitsdauer (Time-to-live, TTL) basierend auf dem Zeitstempel des Dokuments. TTL kann für Sammlungen über das Azure-Portal aktiviert werden.
Transaktionen
Transaktionen mit mehreren Dokumenten werden in einer nicht geshardeten Sammlung unterstützt. Transaktionen mit mehreren Dokumenten werden nicht über mehrere Sammlungen hinweg oder in gesharteten Sammlungen unterstützt. Das Timeout für Transaktionen ist auf fünf Sekunden festgelegt.
Benutzer- und Rollenverwaltung
Azure Cosmos DB unterstützt noch nicht Benutzer und Rollen. Azure Cosmos DB unterstützt jedoch die Azure rollenbasierte Zugriffssteuerung sowie Lese- und Schreibzugriff und schreibgeschützten Zugriff auf Kennwörter/Schlüssel, die über das Azure-Portal (Verbindungszeichenfolgenseite) abgerufen werden können.
Schreibsicherheit
Einige Anwendungen sind auf eine Schreibbestätigung angewiesen, die die Anzahl der Antworten angibt, die während eines Schreibvorgangs erforderlich sind. Aufgrund der Art und Weise, in der Azure Cosmos DB die Replikation im Hintergrund durchführt, gilt für alle Schreibvorgänge automatisch und standardmäßig ein Quorum. Jede vom Clientcode angegebene Schreibsorge wird ignoriert. Weitere Informationen finden Sie unter Verwenden von Konsistenzebenen zum Maximieren der Verfügbarkeit und Leistung.