Azure Cosmos DB-API für MongoDB: unterstützte Features und SyntaxAzure Cosmos DB’s API for MongoDB: supported features and syntax

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

ProtokollunterstützungProtocol Support

Die API für MongoDB von Azure Cosmos DB ist standardmäßig mit der MongoDB-Serverversion 3.2 kompatibel.The Azure Cosmos DB's API for MongoDB is compatible with MongoDB server version 3.2 by default. 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. Features oder Abfrageoperatoren, die in der MongoDB-Version 3.4 hinzugefügt wurden, sind derzeit als Vorschaufunktion verfügbar.Features or query operators added in MongoDB version 3.4 are currently available as a preview feature. 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 MongoDB-Aggregationspipeline ist derzeit auch als separate Vorschaufunktion verfügbar.The MongoDB aggregation pipeline is also currently available as a separate preview feature.

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 Folgenden finden Sie die 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:

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 in der öffentlichen Vorschau.Cosmos DB supports aggregation pipeline 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
$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.

Zusätzliche OperatorenAdditional 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 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. Eindeutige Indizes stellen sicher, dass ein bestimmtes Feld in allen Dokumenten einer Sammlung keine doppelten Werte enthält. Dies ähnelt der Art und Weise, auf die die Eindeutigkeit für den Standardschlüssel „_id“ beibehalten wird.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“ einschließlich 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 (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 role based access control (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. Diese gibt die Anzahl der Antworten an, die während eines Schreibvorgangs erforderlich sind.Some applications rely on a Write Concern which 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

Cosmos DB unterstützt automatisches, serverseitiges Sharding.Cosmos DB supports automatic, server-side sharding. Cosmos DB unterstützt keine manuellen Shardingbefehle.Cosmos DB does not support manual sharding commands.

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.