Azure Cosmos DB für MongoDB (Version 3.6): unterstützte Funktionen und Syntax

GILT FÜR: MongoDB

Azure Cosmos DB ist ein global verteilter Datenbankdienst von Microsoft mit mehreren Modellen. Sie können mit der API für Azure Cosmos DB for MongoDB über einen der Open-Source-MongoDB-Clienttreiber kommunizieren. Die API für Azure Cosmos DB for MongoDB ermöglicht die Verwendung vorhandener Clienttreiber über das Wire Protocol von MongoDB.

Wenn Sie die API für Azure Cosmos DB for MongoDB verwenden, können Sie die Vorteile der vertrauten MongoDB mit allen von Azure Cosmos DB gebotenen Unternehmensfunktionen kombinieren. Dazu gehören globale Verteilung, automatisches Sharding, Gewährleistung der Verfügbarkeit und Wartezeit, Verschlüsselung ruhender Daten, Sicherungen und vieles mehr.

Hinweis

Für Version 3.6 der Azure Cosmos DB-API für MongoDB gibt es zurzeit keine Pläne zum Ende der Lebensdauer (End Of Life, EOL). Die Mindestbenachrichtigungsperiode für ein zukünftiges EOL beträgt drei Jahre.

Protokollunterstützung

Azure Cosmos DB für MongoDB ist bei neuen Konten standardmäßig mit MongoDB Server Version 3.6 kompatibel. Die unterstützten Operatoren und alle Einschränkungen oder Ausnahmen sind unten 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 API für MongoDB-Konten erstellen, hat das Konto der Version 3.6 den Endpunkt im Format *.mongo.cosmos.azure.com, während das Konto der Version 3.2 den Endpunkt im Format *.documents.azure.com hat.

Unterstützung der Abfragesprache

Azure Cosmos DB for MongoDB bietet umfassende Unterstützung für MongoDB-Abfragesprachkonstrukte. Die folgenden Abschnitte enthalten ausführliche Listen mit den Servervorgängen, Operatoren, Stufen, Befehlen und Optionen, die von Azure Cosmos DB derzeit unterstützt werden.

Hinweis

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.

Datenbankbefehle

Azure Cosmos DB for MongoDB unterstützt die folgenden Datenbankbefehle:

Befehle für Abfrage- und Schreibvorgänge

Get-Help Unterstützt
change streams Ja
delete Ja
eval Nein
find Ja
findAndModify Ja
getLastError Ja
getMore Ja
getPrevError Nein
insert Ja
parallelCollectionScan Nein
resetError Nein
update Ja

Authentifizierungsbefehle

Get-Help Unterstützt
authenticate Ja
getnonce Ja
logout Ja

Verwaltungsbefehle

Get-Help Unterstützt
cloneCollectionAsCapped Nein
collMod Nein
connectionStatus Nein
convertToCapped Nein
copydb Nein
create Ja
createIndexes Ja
currentOp Ja
drop Ja
dropDatabase Ja
dropIndexes Ja
filemd5 Ja
killCursors Ja
killOp Nein
listCollections Ja
listDatabases Ja
listIndexes Ja
reIndex Ja
renameCollection Nein

Diagnosebefehle

Get-Help Unterstützt
buildInfo Ja
collStats Ja
connPoolStats Nein
connectionStatus Nein
dataSize Nein
dbHash Nein
dbStats Ja
explain Ja
features Nein
hostInfo Ja
listDatabases Ja
listCommands Nein
profiler Nein
serverStatus Nein
top Nein
whatsmyuri Ja

Aggregationspipeline

Aggregationsbefehle

Get-Help Unterstützt
aggregate Ja
count Ja
distinct Ja
mapReduce Nein

Aggregationsphasen

Get-Help Unterstützt
addFields Ja
bucket Nein
bucketAuto Nein
changeStream Ja
collStats Nein
count Ja
currentOp Nein
facet Ja
geoNear Ja
graphLookup Ja
group Ja
indexStats Nein
limit Ja
listLocalSessions Nein
listSessions Nein
lookup Partial
match Ja
out Ja
project Ja
redact Ja
replaceRoot Ja
replaceWith Nein
sample Ja
skip Ja
sort Ja
sortByCount Ja
unwind Ja

Hinweis

Von $lookup wird das in der Serverversion 3.6 eingeführte Feature für nicht korrelierte Unterabfragen nicht unterstützt. Sie erhalten eine Fehlermeldung mit dem Hinweis let is not supported, wenn Sie versuchen, den Operator $lookup mit den Feldern let und pipeline zu verwenden.

Boolesche Ausdrücke

Get-Help Unterstützt
and Ja
not Ja
or Ja

Set-Ausdrücke

Get-Help Unterstützt
setEquals Ja
setIntersection Ja
setUnion Ja
setDifference Ja
setIsSubset Ja
anyElementTrue Ja
allElementsTrue Ja

Vergleichsausdrücke

Hinweis

Die API für MongoDB unterstützt keine Vergleichsausdrücke mit einem Arrayliteral in der Abfrage.

Get-Help Unterstützt
cmp Ja
eq Ja
gt Ja
gte Ja
lt Ja
lte Ja
ne Ja
in Ja
nin Ja

Arithmetische Ausdrücke

Get-Help Unterstützt
abs Ja
add Ja
ceil Ja
divide Ja
exp Ja
floor Ja
ln Ja
log Ja
log10 Ja
mod Ja
multiply Ja
pow Ja
sqrt Ja
subtract Ja
trunc Ja

Zeichenfolgenausdrücke

Get-Help Unterstützt
concat Ja
indexOfBytes Ja
indexOfCP Ja
split Ja
strLenBytes Ja
strLenCP Ja
strcasecmp Ja
substr Ja
substrBytes Ja
substrCP Ja
toLower Ja
toUpper Ja

Operator für die Textsuche

Get-Help Unterstützt
meta Nein

Arrayausdrücke

Get-Help Unterstützt
arrayElemAt Ja
arrayToObject Ja
concatArrays Ja
filter Ja
indexOfArray Ja
isArray Ja
objectToArray Ja
range Ja
reverseArray Ja
reduce Ja
size Ja
slice Ja
zip Ja
in Ja

Variablenoperatoren

Get-Help Unterstützt
map Ja
let Ja

Systemvariablen

Get-Help Unterstützt
$$CURRENT Ja
$$DESCEND Ja
$$KEEP Ja
$$PRUNE Ja
$$REMOVE Ja
$$ROOT Ja

Literaloperator

Get-Help Unterstützt
literal Ja

Datumsausdrücke

Get-Help Unterstützt
dayOfYear Ja
dayOfMonth Ja
dayOfWeek Ja
year Ja
month Ja
week Ja
hour Ja
minute Ja
second Ja
millisecond Ja
dateToString Ja
isoDayOfWeek Ja
isoWeek Ja
dateFromParts Ja
dateToParts Ja
dateFromString Ja
isoWeekYear Ja

Bedingte Ausdrücke

Get-Help Unterstützt
cond Ja
ifNull Ja
switch Ja

Datentypoperator

Get-Help Unterstützt
type Ja

Akkumulatorausdrücke

Get-Help Unterstützt
sum Ja
avg Ja
first Ja
last Ja
max Ja
min Ja
push Ja
addToSet Ja
stdDevPop Ja
stdDevSamp Ja

Zusammenführungsoperator

Get-Help Unterstützt
mergeObjects Ja

Datentypen

Get-Help Unterstützt
Double Ja
String Ja
Object Ja
Array Ja
Binary Data Ja
ObjectId Ja
Boolean Ja
Date Ja
Null Ja
32-bit Integer (int) Ja
Timestamp Ja
64-bit Integer (long) Ja
MinKey Ja
MaxKey Ja
Decimal128 Ja
Regular Expression Ja
JavaScript Ja
JavaScript (with scope) Ja
Undefined Ja

Indizes und Indexeigenschaften

Indizes

Get-Help Unterstützt
Single Field Index Ja
Compound Index Ja
Multikey Index Ja
Text Index Nein
2dsphere Ja
2d Index Nein
Hashed Index Nein

Indexeigenschaften

Get-Help Unterstützt
TTL Ja
Unique Ja
Partial Nein
Case Insensitive Nein
Sparse Nein
Background Ja

Operatoren

Logische Operatoren

Get-Help Unterstützt
or Ja
and Ja
not Ja
nor Ja

Elementoperatoren

Get-Help Unterstützt
exists Ja
type Ja

Abfrageoperatoren für die Auswertung

Get-Help Unterstützt
expr Ja
jsonSchema Nein
mod Ja
regex Ja
text Nein (nicht unterstützt. Verwenden Sie stattdessen $regex.)
where Nein

In $regex-Abfragen ermöglichen linksverankerte Ausdrücke eine Indexsuche. Die Verwendung des „i“-Modifizierers (keine Berücksichtigung der Groß-/Kleinschreibung) und des „m“-Modifizierers (mehrere Zeilen) führt jedoch zur Sammlungsüberprüfung in allen Ausdrücken.

Wenn $ oder | einbezogen werden muss, empfiehlt es sich, 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 zum Einschränken der Suche auf die Dokumente, die mit „^abc“ beginnen, und der zweite Teil stimmt die exakten Einträge ab. 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. Zur Nutzung des Index wird empfohlen, die Abfrage in zwei unterschiedliche Abfragen zu unterteilen, die durch den „$or“-Operator verbunden sind: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Arrayoperatoren

Get-Help Unterstützt
all Ja
elemMatch Ja
size Ja

Kommentaroperator

Get-Help Unterstützt
comment Ja

Projektionsoperatoren

Get-Help Unterstützt
elemMatch Ja
meta Nein
slice Ja

Aktualisierungsoperatoren

Operatoren für die Feldaktualisierung

Get-Help Unterstützt
inc Ja
mul Ja
rename Ja
setOnInsert Ja
set Ja
unset Ja
min Ja
max Ja
currentDate Ja

Operatoren für die Arrayaktualisierung

Get-Help Unterstützt
$ Ja
$[] Ja
$[\<identifier\>] Ja
addToSet Ja
pop Ja
pullAll Ja
pull Ja
push Ja
pushAll Ja

Aktualisierungsmodifizierer

Get-Help Unterstützt
each Ja
slice Ja
sort Ja
position Ja

Bitweiser Updateoperator

Get-Help Unterstützt
bit Ja
bitsAllSet Nein
bitsAnySet Nein
bitsAllClear Nein
bitsAnyClear Nein

Räumliche Operatoren

Operator Unterstützt
$geoWithin Ja
$geoIntersects Ja
$near Ja
$nearSphere Ja
$geometry Ja
$minDistance Ja
$maxDistance Ja
$center Nein
$centerSphere Nein
$box Nein
$polygon Nein

Sortiervorgänge

Wenn Sie den Vorgang findOneAndUpdate verwenden, werden Sortiervorgänge für ein einzelnes Feld unterstützt, Sortiervorgänge für mehrere Felder aber nicht.

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 MongoDB-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

Azure Cosmos DB unterstützt noch keine wiederholbaren Schreibvorgänge. Clienttreiber müssen ihrer Verbindungszeichenfolge retryWrites=false hinzufügen.

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. Dies bedeutet, dass Sie Befehle wie „addShard“, „balancerStart“, „moveChunk“ usw. nicht aufrufen 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.

Benutzer- und Rollenverwaltung

Azure Cosmos DB unterstützt noch nicht Benutzer und Rollen. Es werden jedoch die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC) sowie Lese-/Schreibkennwörter bzw. -schlüssel und Schreibschutzkennwörter bzw. -schlüssel unterstützt, die über die Seite mit der Verbindungszeichenfolge im Azure-Portal abgerufen werden können.

Schreibbestätigung

Einige Anwendungen unterstützen eine Schreibbestätigung. Diese gibt die Anzahl der Antworten an, die während eines Schreibvorgangs erforderlich sind. Aufgrund der Art der Replikationsverarbeitung in Azure Cosmos DB sind standardmäßig alle Schreibvorgänge automatisch ein Mehrheitsquorum, wenn starke Konsistenz verwendet wird. Alle Schreibvorgänge, die durch den Clientcode angegeben werden, werden ignoriert. Weitere Informationen finden Sie in dem Artikel Verwenden von Konsistenzebenen zum Maximieren der Verfügbarkeit und Leistung.

Nächste Schritte

  • Weitere Informationen finden Sie unter Features der Mongo-Version 3.6
  • Informieren Sie sich, wie Studio 3T bei Azure Cosmos DB for MongoDB verwendet wird.
  • Informieren Sie sich, wie Robo 3T bei Azure Cosmos DB for MongoDB verwendet wird.
  • Untersuchen Sie MongoDB-Beispiele mit Azure Cosmos DB for MongoDB.