Azure Cosmos DB-API für MongoDB (Version 3.2): unterstützte Features und SyntaxAzure Cosmos DB's API for MongoDB (3.2 version): supported features and syntax

GILT FÜR: Azure Cosmos DB-API für MongoDB

Azure Cosmos DB ist ein global verteilter Datenbankdienst von Microsoft mit mehreren Modellen.Azure Cosmos DB is Microsoft's globally distributed multi-model database service. Sie können mit der API für MongoDB von Azure Cosmos DB über einen der Open-Source-MongoDB-Clienttreiber kommunizieren. (Diese Treiber finden Sie hier).You can communicate with the Azure Cosmos DB's API for MongoDB using any of the open-source MongoDB client drivers. Die API für MongoDB von Azure Cosmos DB ermöglicht die Verwendung vorhandener Clienttreiber durch Nutzung des Wire Protocol von MongoDB.The Azure Cosmos DB's API for MongoDB enables the use of existing client drivers by adhering to the MongoDB wire protocol.

Mit der API für MongoDB von Azure Cosmos DB können Sie die Vorteile der vertrauten MongoDB mit allen Unternehmensfunktionen von Cosmos DB kombinieren. Hierzu zählen unter anderem globale Verteilung, automatisches Sharding, Gewährleistung der Verfügbarkeit und Latenz, automatische Indizierung der einzelnen Felder, Verschlüsselung ruhender Daten sowie Sicherungen.By using the Azure Cosmos DB's API for MongoDB, you can enjoy the benefits of the MongoDB you're used to, with all of the enterprise capabilities that Cosmos DB provides: global distribution, automatic sharding, availability and latency guarantees, automatic indexing of every field, encryption at rest, backups, and much more.

Hinweis

Dieser Artikel enthält Informationen zur Azure Cosmos DB-API für MongoDB 3.2.This article is for Azure Cosmos DB's API for MongoDB 3.2. Informationen für die MongoDB-Version 3.6 finden Sie unter Azure Cosmos DB-API für MongoDB (Version 3.6): unterstützte Features und Syntax.For MongoDB 3.6 version, see MongoDB 3.6 supported features and syntax.

ProtokollunterstützungProtocol Support

Alle neuen Konten für die Azure Cosmos DB-API für MongoDB sind mit der MongoDB-Serverversion 3.6 kompatibel.All new accounts for Azure Cosmos DB's API for MongoDB are compatible with MongoDB server version 3.6. In diesem Artikel wird die MongoDB-Version 3.2 behandelt.This article covers MongoDB version 3.2. Die unterstützten Operatoren und alle Einschränkungen oder Ausnahmen sind unten aufgeführt.The supported operators and any limitations or exceptions are listed below. Alle Clienttreiber, die diese Protokolle verstehen, sollten auch mit der API für MongoDB von Azure Cosmos DB eine Verbindung herstellen können.Any client driver that understands these protocols should be able to connect to Azure Cosmos DB's API for MongoDB.

Die Azure Cosmos DB-API für MongoDB bietet für qualifizierte Konten zudem eine nahtlose Upgradeerfahrung.Azure Cosmos DB's API for MongoDB also offers a seamless upgrade experience for qualifying accounts. Weitere Informationen finden Sie im Upgradehandbuch für MongoDB.Learn more on the MongoDB version upgrade guide.

Unterstützung der AbfragespracheQuery language support

Die API für MongoDB von Azure Cosmos DB bietet umfassende Unterstützung für MongoDB-Abfragesprachkonstrukte.Azure Cosmos DB's API for MongoDB provides comprehensive support for MongoDB query language constructs. Im Anschluss finden Sie eine detaillierte Aufstellung der aktuell unterstützten Vorgänge, Operatoren, Phasen, Befehle und Optionen:Below you can find the detailed list of currently supported operations, operators, stages, commands, and options.

DatenbankbefehleDatabase commands

Die API für MongoDB von Azure Cosmos DB unterstützt die folgenden Datenbankbefehle:Azure Cosmos DB's API for MongoDB supports the following database commands:

Hinweis

Dieser Artikel enthält nur die unterstützten Serverbefehle und keine clientseitigen Wrapperfunktionen.This article only lists the supported server commands and excludes client-side wrapper functions. Für clientseitige Wrapperfunktionen, z. B. deleteMany() und updateMany(), werden intern die Serverbefehle delete() und update() genutzt.Client-side wrapper functions such as deleteMany() and updateMany() internally utilize the delete() and update() server commands. Funktionen, für die unterstützte Serverbefehle genutzt werden, sind mit der API für MongoDB von Azure Cosmos DB kompatibel.Functions utilizing supported server commands are compatible with Azure Cosmos DB's API for MongoDB.

Befehle für Abfrage- und SchreibvorgängeQuery and write operation commands

  • deletedelete
  • Suchenfind
  • findAndModifyfindAndModify
  • getLastErrorgetLastError
  • getMoregetMore
  • insertinsert
  • aktualisierenupdate

AuthentifizierungsbefehleAuthentication commands

  • logoutlogout
  • authenticateauthenticate
  • getnoncegetnonce

VerwaltungsbefehleAdministration commands

  • dropDatabasedropDatabase
  • listCollectionslistCollections
  • dropdrop
  • createcreate
  • filemd5filemd5
  • createIndexescreateIndexes
  • listIndexeslistIndexes
  • dropIndexesdropIndexes
  • connectionStatusconnectionStatus
  • reIndexreIndex

DiagnosebefehleDiagnostics commands

  • buildInfobuildInfo
  • collStatscollStats
  • dbStatsdbStats
  • hostInfohostInfo
  • listDatabaseslistDatabases
  • whatsmyuriwhatsmyuri

AggregationspipelineAggregation pipeline

Cosmos DB unterstützt die Aggregationspipeline für MongoDB 3.2 in der Public Preview-Phase.Cosmos DB supports aggregation pipeline for MongoDB 3.2 in public preview. Anweisungen zur Integration der öffentlichen Vorschau finden Sie im Azure-Blog.See the Azure blog for instructions on how to onboard to the public preview.

AggregationsbefehleAggregation commands

  • aggregateaggregate
  • countcount
  • distinctdistinct

AggregationsphasenAggregation stages

  • $project$project
  • $match$match
  • $limit$limit
  • $skip$skip
  • $unwind$unwind
  • $group$group
  • $sample$sample
  • $sort$sort
  • $lookup$lookup
  • $out$out
  • $count$count
  • $addFields$addFields

AggregationsausdrückeAggregation expressions

Boolesche AusdrückeBoolean expressions

  • $and$and
  • $or$or
  • $not$not

Set-AusdrückeSet expressions

  • $setEquals$setEquals
  • $setIntersection$setIntersection
  • $setUnion$setUnion
  • $setDifference$setDifference
  • $setIsSubset$setIsSubset
  • $anyElementTrue$anyElementTrue
  • $allElementsTrue$allElementsTrue

VergleichsausdrückeComparison expressions

  • $cmp$cmp
  • $eq$eq
  • $gt$gt
  • $gte$gte
  • $lt$lt
  • $lte$lte
  • $ne$ne

Arithmetische AusdrückeArithmetic expressions

  • $abs$abs
  • $add$add
  • $ceil$ceil
  • $divide$divide
  • $exp$exp
  • $floor$floor
  • $ln$ln
  • $log$log
  • $log10$log10
  • $mod$mod
  • $multiply$multiply
  • $pow$pow
  • $sqrt$sqrt
  • $subtract$subtract
  • $trunc$trunc

ZeichenfolgenausdrückeString expressions

  • $concat$concat
  • $indexOfBytes$indexOfBytes
  • $indexOfCP$indexOfCP
  • $split$split
  • $strLenBytes$strLenBytes
  • $strLenCP$strLenCP
  • $strcasecmp$strcasecmp
  • $substr$substr
  • $substrBytes$substrBytes
  • $substrCP$substrCP
  • $toLower$toLower
  • $toUpper$toUpper

ArrayausdrückeArray expressions

  • $arrayElemAt$arrayElemAt
  • $concatArrays$concatArrays
  • $filter$filter
  • $indexOfArray$indexOfArray
  • $isArray$isArray
  • $range$range
  • $reverseArray$reverseArray
  • $size$size
  • $slice$slice
  • $in$in

DatumsausdrückeDate expressions

  • $dayOfYear$dayOfYear
  • $dayOfMonth$dayOfMonth
  • $dayOfWeek$dayOfWeek
  • $year$year
  • $month$month
  • $week$week
  • $hour$hour
  • $minute$minute
  • $second$second
  • $millisecond$millisecond
  • $isoDayOfWeek$isoDayOfWeek
  • $isoWeek$isoWeek

Bedingte AusdrückeConditional expressions

  • $cond$cond
  • $ifNull$ifNull

AggregationsakkumulatorenAggregation accumulators

  • $sum$sum
  • $avg$avg
  • $first$first
  • $last$last
  • $max$max
  • $min$min
  • $push$push
  • $addToSet$addToSet

OperatorenOperators

Folgende Operatoren werden mit den entsprechenden Verwendungsbeispielen unterstützt.Following operators are supported with corresponding examples of their use. Berücksichtigen Sie dieses in den folgenden Abfragen verwendete Beispieldokument:Consider this sample document used in the queries below:

{
  "Volcano Name": "Rainier",
  "Country": "United States",
  "Region": "US-Washington",
  "Location": {
    "type": "Point",
    "coordinates": [
      -121.758,
      46.87
    ]
  },
  "Elevation": 4392,
  "Type": "Stratovolcano",
  "Status": "Dendrochronology",
  "Last Known Eruption": "Last known eruption from 1800-1899, inclusive"
}
OperatorOperator BeispielExample
$eq$eq { "Volcano Name": { $eq: "Rainier" } } -
$gt$gt { "Elevation": { $gt: 4000 } } -
$gte$gte { "Elevation": { $gte: 4392 } } -
$lt$lt { "Elevation": { $lt: 5000 } } -
$lte$lte { "Elevation": { $lte: 5000 } } -
$ne$ne { "Elevation": { $ne: 1 } } -
$in$in { "Volcano Name": { $in: ["St. Helens", "Rainier", "Glacier Peak"] } } -
$nin$nin { "Volcano Name": { $nin: ["Lassen Peak", "Hood", "Baker"] } } -
$or$or { $or: [ { Elevation: { $lt: 4000 } }, { "Volcano Name": "Rainier" } ] } -
$and$and { $and: [ { Elevation: { $gt: 4000 } }, { "Volcano Name": "Rainier" } ] } -
$not$not { "Elevation": { $not: { $gt: 5000 } } } -
$nor$nor { $nor: [ { "Elevation": { $lt: 4000 } }, { "Volcano Name": "Baker" } ] } -
$exists$exists { "Status": { $exists: true } } -
$type$type { "Status": { $type: "string" } } -
$mod$mod { "Elevation": { $mod: [ 4, 0 ] } } -
$regex$regex { "Volcano Name": { $regex: "^Rain"} } -

NotizenNotes

In $regex-Abfragen lassen linksverankerte Ausdrücke die Indexsuche zu.In $regex queries, Left-anchored expressions allow index search. 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.However, using 'i' modifier (case-insensitivity) and 'm' modifier (multiline) causes the collection scan in all expressions. Wenn „$“ oder „|“ eingeschlossen werden muss, empfiehlt es sich, zwei (oder mehr) RegEx-Abfragen zu erstellen.When there's a need to include '$' or '|', it is best to create two (or more) regex queries. Die folgende ursprüngliche Abfrage find({x:{$regex: /^abc$/}) muss beispielsweise wie folgt geändert werden: find({x:{$regex: /^abc/, x:{$regex:/^abc$/}}).For example, given the following original query: find({x:{$regex: /^abc$/}), it has to be modified as follows: 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.The first part will use the index to restrict the search to those documents beginning with ^abc and the second part will match the exact entries. 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.The bar operator '|' acts as an "or" function - the query find({x:{$regex: /^abc|^def/}) matches the documents in which field 'x' has values that begin with "abc" or "def". 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/}] }).To utilize the index, it's recommended to break the query into two different queries joined by the $or operator: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

AktualisierungsoperatorenUpdate operators

Operatoren für die FeldaktualisierungField update operators

  • $inc$inc
  • $mul$mul
  • $rename$rename
  • $setOnInsert$setOnInsert
  • $set$set
  • $unset$unset
  • $min$min
  • $max$max
  • $currentDate$currentDate

Operatoren für die ArrayaktualisierungArray update operators

  • $addToSet$addToSet
  • $pop$pop
  • $pullAll$pullAll
  • $pull (Hinweis: „$pull“ mit Bedingung wird nicht unterstützt.)$pull (Note: $pull with condition is not supported)
  • $pushAll$pushAll
  • $push$push
  • $each$each
  • $slice$slice
  • $sort$sort
  • $position$position

Bitweiser UpdateoperatorBitwise update operator

  • $bit$bit

Räumliche OperatorenGeospatial operators

OperatorOperator BeispielExample UnterstütztSupported
$geoWithin$geoWithin { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } JaYes
$geoIntersects$geoIntersects { "Location.coordinates": { $geoIntersects: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } JaYes
$near$near { "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } JaYes
$nearSphere$nearSphere { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } JaYes
$geometry$geometry { "Location.coordinates": { $geoWithin: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } JaYes
$minDistance$minDistance { "Location.coordinates": { $nearSphere : { $geometry: {type: "Point", coordinates: [ -121, 46 ]}, $minDistance: 1000, $maxDistance: 1000000 } } } JaYes
$maxDistance$maxDistance { "Location.coordinates": { $nearSphere : [ -121, 46 ], $maxDistance: 0.50 } } JaYes
$center$center { "Location.coordinates": { $geoWithin: { $center: [ [-121, 46], 1 ] } } } JaYes
$centerSphere$centerSphere { "Location.coordinates": { $geoWithin: { $centerSphere: [ [ -121, 46 ], 5 ] } } } JaYes
$box$box { "Location.coordinates": { $geoWithin: { $box: [ [ 0, 0 ], [ -122, 47 ] ] } } } JaYes
$polygon$polygon { "Location.coordinates": { $near: { $geometry: { type: "Polygon", coordinates: [ [ [ -121.9, 46.7 ], [ -121.5, 46.7 ], [ -121.5, 46.9 ], [ -121.9, 46.9 ], [ -121.9, 46.7 ] ] ] } } } } JaYes

SortiervorgängeSort Operations

Bei Verwendung des findOneAndUpdate-Vorgangs werden Sortiervorgänge für ein einzelnes Feld unterstützt, Sortiervorgänge für mehrere Felder jedoch nicht.When using the findOneAndUpdate operation, sort operations on a single field are supported but sort operations on multiple fields are not supported.

Andere OperatorenOther operators

OperatorOperator BeispielExample NotizenNotes
$all$all { "Location.coordinates": { $all: [-121.758, 46.87] } }
$elemMatch$elemMatch { "Location.coordinates": { $elemMatch: { $lt: 0 } } }
$size$size { "Location.coordinates": { $size: 2 } }
$comment$comment { "Location.coordinates": { $elemMatch: { $lt: 0 } }, $comment: "Negative values"}
$text$text Wird nicht unterstützt.Not supported. Verwenden Sie stattdessen „$regex“.Use $regex instead.

Nicht unterstützte OperatorenUnsupported operators

Die Operatoren $where und $eval werden von Azure Cosmos DB nicht unterstützt.The $where and the $eval operators are not supported by Azure Cosmos DB.

MethodenMethods

Folgende Methoden werden unterstützt:Following methods are supported:

CursormethodenCursor methods

MethodeMethod BeispielExample NotizenNotes
cursor.sort()cursor.sort() cursor.sort({ "Elevation": -1 }) Dokumente ohne Sortierschlüssel werden nicht zurückgegeben.Documents without sort key do not get returned

Eindeutige IndizesUnique indexes

Cosmos DB indiziert jedes Feld in Dokumenten, die standardmäßig in die Datenbank geschrieben werden.Cosmos DB indexes every field in documents that are written to the database by default. Durch eindeutige Indizes wird sichergestellt, dass ein bestimmtes Feld keine doppelten Werte in einem Dokument einer Sammlung enthält. Dies ist vergleichbar mit der Wahrung der Eindeutigkeit für den Standardschlüssel _id.Unique indexes ensure that a specific field doesn't have duplicate values across all documents in a collection, similar to the way uniqueness is preserved on the default _id key. Sie können benutzerdefinierte Indizes in Cosmos DB erstellen, indem Sie den Befehl „createIndex“ mit der Einschränkung „unique“ verwenden.You can create custom indexes in Cosmos DB by using the createIndex command, including the 'unique' constraint.

Eindeutige Indizes sind für alle Cosmos-Konten mithilfe der API für MongoDB von Cosmos DB verfügbar.Unique indexes are available for all Cosmos accounts using Azure Cosmos DB's API for MongoDB.

Gültigkeitsdauer (TTL)Time-to-live (TTL)

Cosmos DB unterstützt eine Gültigkeitsdauer (Time-to-live, TTL) basierend auf dem Zeitstempel des Dokuments.Cosmos DB supports a time-to-live (TTL) based on the timestamp of the document. TTL kann für Sammlungen über das Azure-Portal aktiviert werden.TTL can be enabled for collections by going to the Azure portal.

Benutzer- und RollenverwaltungUser and role management

Cosmos DB unterstützt noch keine Benutzer und Rollen.Cosmos DB does not yet support users and roles. Cosmos DB unterstützt jedoch die rollenbasierte Zugriffssteuerung in Azure (Azure Role-Based Access Control, Azure RBAC) sowie Lese-/Schreibkennwörter/-schlüssel und Schreibschutzkennwörter/-schlüssel, die über das Azure-Portal (Seite „Verbindungszeichenfolge“) abgerufen werden können.However, Cosmos DB supports Azure role-based access control (Azure RBAC) and read-write and read-only passwords/keys that can be obtained through the Azure portal (Connection String page).

ReplikationReplication

Cosmos DB unterstützt die automatische, native Replikation auf den niedrigsten Ebenen.Cosmos DB supports automatic, native replication at the lowest layers. Diese Logik wird erweitert, um auch die globale Replikation mit geringer Latenz zu erreichen.This logic is extended out to achieve low-latency, global replication as well. Cosmos DB unterstützt keine manuellen Replikationsbefehle.Cosmos DB does not support manual replication commands.

SchreibbestätigungWrite Concern

Einige Anwendungen unterstützen eine Schreibbestätigung. Hiermit wird die Anzahl von Antworten angegeben, die während eines Schreibvorgangs erforderlich sind.Some applications rely on a Write Concern that specifies the number of responses required during a write operation. Aufgrund der Art und Weise, in der Cosmos DB die Replikation im Hintergrund durchführt, gilt für alle Schreibvorgänge automatisch und standardmäßig ein Quorum.Due to how Cosmos DB handles replication in the background all writes are all automatically Quorum by default. Alle Schreibvorgänge, die durch den Clientcode angegeben werden, werden ignoriert.Any write concern specified by the client code is ignored. Weitere Informationen finden Sie unter Verwenden von Konsistenzebenen zum Maximieren der Verfügbarkeit und Leistung.Learn more in Using consistency levels to maximize availability and performance.

Sharding (Horizontales Partitionieren)Sharding

Azure Cosmos DB unterstützt das automatische, serverseitige Sharding.Azure Cosmos DB supports automatic, server-side sharding. Die Erstellung, die Platzierung und der Ausgleich von Shards wird automatisch verwaltet.It manages shard creation, placement, and balancing automatically. Azure Cosmos DB unterstützt keine manuellen Shardingbefehle. Das bedeutet, dass Sie keine Befehle wie „shardCollection“, „addShard“, „balancerStart“, „moveChunk“ usw. aufrufen müssen. Sie müssen beim Erstellen der Container oder beim Abfragen der Daten nur den Shardschlüssel angeben.Azure Cosmos DB does not support manual sharding commands, which means you don't have to invoke commands such as shardCollection, addShard, balancerStart, moveChunk etc. You only need to specify the shard key while creating the containers or querying the data.

Nächste SchritteNext steps

  • Erfahren Sie, wie Sie Studio 3T mit der API für MongoDB von Azure Cosmos DB verwenden.Learn how to use Studio 3T with Azure Cosmos DB's API for MongoDB.
  • Erfahren Sie, wie Sie Robo 3T mit der API für MongoDB von Azure Cosmos DB verwenden.Learn how to use Robo 3T with Azure Cosmos DB's API for MongoDB.
  • Untersuchen Sie MongoDB-Beispiele mit der API für MongoDB von Azure Cosmos DB.Explore MongoDB samples with Azure Cosmos DB's API for MongoDB.

Hinweis: Dieser Artikel beschreibt ein Feature von Azure Cosmos DB, das Wire Protocol-Kompatibilität mit MongoDB-Datenbanken bietet. Microsoft führt keine MongoDB-Datenbanken aus, um diesen Dienst bereitzustellen. Azure Cosmos DB ist kein Partner von MongoDB, Inc.Note: This article describes a feature of Azure Cosmos DB that provides wire protocol compatibility with MongoDB databases. Microsoft does not run MongoDB databases to provide this service. Azure Cosmos DB is not affiliated with MongoDB, Inc.