Azure Cosmos DB für MongoDB (Version 3.6): unterstützte Funktionen und Syntax
Artikel
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:
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
Keine
2dsphere
Ja
2d Index
Nr.
Hashed Index
Nein
Indexeigenschaften
Get-Help
Unterstützt
TTL
Ja
Unique
Ja
Partial
Nr.
Case Insensitive
Nr.
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
Keine
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
Keine
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
Nr.
bitsAnySet
Nr.
bitsAllClear
Nr.
bitsAnyClear
Nein
Räumliche Operatoren
Operator
Unterstützt
$geoWithin
Ja
$geoIntersects
Ja
$near
Ja
$nearSphere
Ja
$geometry
Ja
$minDistance
Ja
$maxDistance
Ja
$center
Nr.
$centerSphere
Nr.
$box
Nr.
$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.