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 |
Keine |
find |
Ja |
findAndModify |
Ja |
getLastError |
Ja |
getMore |
Ja |
getPrevError |
Keine |
insert |
Ja |
parallelCollectionScan |
Nr. |
resetError |
Nein |
update |
Ja |
Authentifizierungsbefehle
Get-Help |
Unterstützt |
authenticate |
Ja |
getnonce |
Ja |
logout |
Ja |
Verwaltungsbefehle
Get-Help |
Unterstützt |
cloneCollectionAsCapped |
Nein |
collMod |
Nr. |
connectionStatus |
Nr. |
convertToCapped |
Nr. |
copydb |
Nein |
create |
Ja |
createIndexes |
Ja |
currentOp |
Ja |
drop |
Ja |
dropDatabase |
Ja |
dropIndexes |
Ja |
filemd5 |
Ja |
killCursors |
Ja |
killOp |
Keine |
listCollections |
Ja |
listDatabases |
Ja |
listIndexes |
Ja |
reIndex |
Ja |
renameCollection |
Nein |
Diagnosebefehle
Get-Help |
Unterstützt |
buildInfo |
Ja |
collStats |
Ja |
connPoolStats |
Nr. |
connectionStatus |
Nr. |
dataSize |
Nr. |
dbHash |
Nein |
dbStats |
Ja |
explain |
Ja |
features |
Keine |
hostInfo |
Ja |
listDatabases |
Ja |
listCommands |
Nr. |
profiler |
Nr. |
serverStatus |
Nr. |
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 |
Nr. |
bucketAuto |
Nein |
changeStream |
Ja |
collStats |
Keine |
count |
Ja |
currentOp |
Keine |
facet |
Ja |
geoNear |
Ja |
graphLookup |
Ja |
group |
Ja |
indexStats |
Keine |
limit |
Ja |
listLocalSessions |
Nr. |
listSessions |
Nein |
lookup |
Partial |
match |
Ja |
out |
Ja |
project |
Ja |
redact |
Ja |
replaceRoot |
Ja |
replaceWith |
Keine |
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 |
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 |
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.
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.