Azure Cosmos DB API voor MongoDB (serverversie 4.0): ondersteunde functies en syntaxis

VAN TOEPASSING OP: Azure Cosmos DB-API voor MongoDB

Azure Cosmos DB is de wereldwijd gedistribueerde multimodel-databaseservice van Microsoft. U kunt met de API van Azure Cosmos DB voor MongoDB communiceren via een van de open-source MongoDB-clientstuurprogramma's. De API van Azure Cosmos DB voor MongoDB maakt het gebruik van bestaande clientstuurprogramma's mogelijk doordat de API functioneert conform het MongoDB-wireprotocol.

Door gebruik te maken van de API van Azure Cosmos DB voor MongoDB hebt u de beschikking over de voordelen van de vertrouwde MongoDB, met alle zakelijke mogelijkheden die Cosmos DB biedt: wereldwijde distributie, automatische sharding, garanties voor beschikbaarheid en latentie, versleuteling van niet-actieve gegevens, het maken van back-ups en nog veel meer.

Ondersteuning voor protocol

De ondersteunde operators en eventuele beperkingen of uitzonderingen worden hieronder vermeld. Elk clientstuurprogramma dat deze protocollen kent, kan verbinding maken met de API van Azure Cosmos DB voor MongoDB. Wanneer u de API Azure Cosmos DB voor MongoDB-accounts gebruikt, hebben de 3.6+-versies van accounts het eindpunt in de indeling, terwijl de *.mongo.cosmos.azure.com 3.2-versie van accounts het eindpunt heeft in de indeling *.documents.azure.com .

Notitie

Dit artikel bevat alleen de ondersteunde serveropdrachten en sluit wrapper-functies aan de clientzijde uit. Wrapper-functies aan de clientzijde, zoals deleteMany() en updateMany(), maken intern gebruik van de serveropdrachten delete() en update(). Functies die gebruikmaken van ondersteunde serveropdrachten zijn compatibel met de API van Azure Cosmos DB voor MongoDB.

Ondersteuning voor querytaal

De API van Azure Cosmos DB voor MongoDB biedt uitgebreide ondersteuning voor MongoDB-querytaalconstructs. Hieronder ziet u de gedetailleerde lijst met momenteel ondersteunde bewerkingen, operators, fasen, opdrachten en opties.

Databaseopdrachten

De API van Azure Cosmos DB voor MongoDB biedt ondersteuning voor de volgende databaseopdrachten:

Opdrachten voor query- en schrijfbewerkingen

Opdracht Ondersteund
stromen wijzigen Yes
delete Ja
Eval No
find Ja
findAndModify Ja
getLastError Ja
getMore Ja
getPrevError Nee
insert Ja
parallelCollectionScan No
resetError Nee
update Ja

Transactieopdrachten

Opdracht Ondersteund
abortTransaction Yes
commitTransaction Ja

Verificatieopdrachten

Opdracht Ondersteund
authenticate Ja
getnonce Ja
logout Ja

Beheeropdrachten

Opdracht Ondersteund
cloneCollectionAsCapped Nee
collMod Nee
connectionStatus Nee
convertToCapped Nee
copydb Nee
maken Ja
createIndexes Ja
currentOp Ja
drop Ja
dropDatabase Ja
dropIndexes Ja
filemd5 Ja
killCursors Ja
killOp Nee
listCollections Ja
listDatabases Ja
listIndexes Ja
reIndex Ja
renameCollection Nee

Diagnostics commands

Opdracht Ondersteund
buildInfo Ja
collStats Ja
connPoolStats Nee
connectionStatus Nee
dataSize Nee
dbHash Nee
dbStats Ja
explain Ja
features Nee
hostInfo Ja
listDatabases Ja
listCommands Nee
profiler Nee
serverStatus Nee
top Nee
whatsmyuri Ja

Aggregatiepijplijn

Samenvoegingsopdrachten

Opdracht Ondersteund
aggregate Ja
count Ja
distinct Ja
mapReduce Nee

Samenvoegingsfasen

Opdracht Ondersteund
$addFields Yes
$bucket Nee
$bucketAuto Nee
$changeStream Yes
$collStats Nee
$count Ja
$currentOp Nee
$facet Yes
$geoNear Yes
$graphLookup Yes
$group Ja
$indexStats Nee
$limit Ja
$listLocalSessions Nee
$listSessions Nee
$lookup Gedeeltelijk
$match Ja
$out Ja
$project Ja
$redact Ja
$replaceRoot Ja
$replaceWith No
$sample Ja
$skip Ja
$sort Ja
$sortByCount Ja
$unwind Ja

Notitie

$lookup biedt nog geen ondersteuning voor de niet-gerelateerde subquery-functie die is geïntroduceerd in serverversie 3.6. U ontvangt een foutmelding met een bericht met let is not supported als u probeert de operator te gebruiken met - en $lookup let pipeline -velden.

Booleaanse expressies

Opdracht Ondersteund
$and Ja
$not Ja
$or Ja

Conversie-expressies

Opdracht Ondersteund
$convert Yes
$toBool Yes
$toDate Yes
$toDecimal Yes
$toDouble Yes
$toInt Yes
$toLong Yes
$toObjectId Yes
$toString Ja

Expressies voor instellen

Opdracht Ondersteund
$setEquals Ja
$setIntersection Ja
$setUnion Ja
$setDifference Ja
$setIsSubset Ja
$anyElementTrue Ja
$allElementsTrue Ja

Expressies voor vergelijken

Notitie

De API voor MongoDB biedt geen ondersteuning voor vergelijkingsexpressie met een letterlijke matrix in de query.

Opdracht Ondersteund
$cmp Ja
$eq Ja
$gt Ja
$gte Ja
$lt Ja
$lte Ja
$ne Ja
$in Ja
$nin Ja

Rekenkundige expressies

Opdracht Ondersteund
$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

Tekenreeksexpressies

Opdracht Ondersteund
$concat Ja
$indexOfBytes Ja
$indexOfCP Ja
$ltrim Yes
$rtrim Yes
$trim Ja
$split Ja
$strLenBytes Ja
$strLenCP Ja
$strcasecmp Ja
$substr Ja
$substrBytes Ja
$substrCP Ja
$toLower Ja
$toUpper Ja

Operator voor tekst zoeken

Opdracht Ondersteund
$meta Nee

Matrixexpressies

Opdracht Ondersteund
$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

Operators voor variabelen

Opdracht Ondersteund
$map Yes
$let Ja

Systeemvariabelen

Opdracht Ondersteund
$$CURRENT Ja
$$DESCEND Ja
$$KEEP Ja
$$PRUNE Ja
$$REMOVE Ja
$$ROOT Ja

Letterlijke operator

Opdracht Ondersteund
$literal Ja

Datumexpressies

Opdracht Ondersteund
$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 Yes
$dateToParts Yes
$dateFromString Yes
$isoWeekYear Ja

Voorwaardelijke expressies

Opdracht Ondersteund
$cond Ja
$ifNull Ja
$switch Ja

Operator voor gegevenstype

Opdracht Ondersteund
$type Ja

Accumulatorexpressies

Opdracht Ondersteund
$sum Ja
$avg Ja
$first Ja
$last Ja
$max Ja
$min Ja
$push Ja
$addToSet Ja
$stdDevPop Yes
$stdDevSamp Yes

Operator voor samenvoegen

Opdracht Ondersteund
$mergeObjects Ja

Gegevenstypen

Azure Cosmos DB API voor MongoDB ondersteunt documenten die zijn gecodeerd in MongoDB BSON-indeling. De API-versie 4.0 verbetert het interne gebruik van deze indeling om de prestaties te verbeteren en de kosten te verlagen. Documenten die zijn geschreven of bijgewerkt via een eindpunt met 4.0 profiteren hiervan.

In een upgradescenarioprofiteren documenten die zijn geschreven vóór de upgrade naar versie 4.0 niet van de verbeterde prestaties totdat ze worden bijgewerkt via een schrijfbewerking via het 4.0-eindpunt.

Opdracht Ondersteund
Dubbel Ja
Tekenreeks Ja
Object Ja
Matrix Ja
Binaire gegevens Ja
ObjectId Ja
Booleaans Ja
Date Ja
Null Ja
32-bits geheel getal (int) Ja
Tijdstempel Ja
64-bits geheel getal (lang) Ja
MinKey Ja
MaxKey Ja
Decimal128 Ja
Reguliere expressie Ja
Javascript Ja
JavaScript (met bereik) Ja
Undefined Ja

Indexen en indexeigenschappen

Indexen

Opdracht Ondersteund
Index met één veld Ja
Samengestelde index Ja
Index met meerdere sleutels Ja
Tekstindex Nee
2dsphere Ja
2D-index Nee
Gehashte index Ja

Indexeigenschappen

Opdracht Ondersteund
TTL Ja
Uniek Ja
Gedeeltelijk Nee
Niet-hoofdlettergevoelig Nee
Sparse Nee
Achtergrond Ja

Operators

Logische operators

Opdracht Ondersteund
$or Ja
$and Ja
$not Ja
$nor Ja

Operators voor elementen

Opdracht Ondersteund
$exists Ja
$type Ja

Operators voor evaluatiequery's

Opdracht Ondersteund
$expr Nee
$jsonSchema Nee
$mod Ja
$regex Ja
$text Nee (niet ondersteund. Gebruik in plaats hiervan $regex.)
$where Nee

In de $regex-query's is zoeken in de index toegestaan op basis van links-verankerde expressies. Als u echter de aanpassingsfuncties i (geen hoofdlettergevoeligheid) en m (meerdere regels) gebruikt, wordt de verzameling gescand in alle expressies.

Wanneer $ of | moet worden opgenomen, kunt u het beste twee (of meer) regex-query’s maken. Bijvoorbeeld, bij de volgende oorspronkelijke query: find({x:{$regex: /^abc$/}), moet dit als volgt worden gewijzigd:

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

Het eerste deel maakt gebruik van de index om alleen te zoeken naar de documenten die beginnen met ^abc en het tweede deel zoekt naar een overeenkomst tussen de exacte vermeldingen. De streepoperator | fungeert als de functie: or. De query find({x:{$regex: /^abc |^def/}) komt overeen met de documenten waarin het veld x waarden heeft die beginnen met abc of def. Als u de index wilt gebruiken, kunt u de query het beste opsplitsen in twee verschillende query’s die zijn verbonden met de operator $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Operators voor matrices

Opdracht Ondersteund
$all Ja
$elemMatch Ja
$size Ja

Operator voor opmerkingen

Opdracht Ondersteund
$comment Ja

Operators voor projecties

Opdracht Ondersteund
$elemMatch Ja
$meta Nee
$slice Ja

Operators voor updates

Operators voor veldupdates

Opdracht Ondersteund
$inc Ja
$mul Ja
$rename Ja
$setOnInsert Ja
$set Ja
$unset Ja
$min Ja
$max Ja
$currentDate Ja

Operators voor matrixupdates

Opdracht Ondersteund
$ Ja
$[] Ja
$[<identifier>] Ja
$addToSet Ja
$pop Ja
$pullAll Ja
$pull Ja
$push Ja
$pushAll Ja

Aanpassingsfuncties voor bijwerken

Opdracht Ondersteund
$each Ja
$slice Ja
$sort Ja
$position Ja

Operators voor bitwise-updates

Opdracht Ondersteund
$bit Ja
$bitsAllSet Nee
$bitsAnySet Nee
$bitsAllClear Nee
$bitsAnyClear Nee

Georuimtelijke operators

Operator Ondersteund
$geoWithin Ja
$geoIntersects Ja
$near Ja
$nearSphere Ja
$geometry Ja
$minDistance Ja
$maxDistance Ja
$center No
$centerSphere No
$box No
$polygon No

Bewerkingen sorteren

Tijdens het gebruik van bewerking findOneAndUpdate, worden sorteerbewerkingen op één veld ondersteund, maar sorteerbewerkingen op meerdere velden worden niet ondersteund.

Indexeren

De API voor MongoDB ondersteunt diverse indexen om sorteren op meerdere velden mogelijk te maken, queryprestaties te verbeteren en uniekheid af te dwingen.

GridFS

Azure Cosmos DB ondersteuning voor GridFS via elk GridFS-compatibel Mongo-stuurprogramma.

Replicatie

Azure Cosmos DB biedt ondersteuning voor automatische, systeemeigen replicatie op de laagste lagen. Deze logica is uitgebreid om tevens globale replicatie met een lage latentie te bereiken. Cosmos DB biedt geen ondersteuning voor handmatige replicatieopdrachten.

Schrijfbare schrijfbare schrijfbare schrijfbare

Cosmos DB biedt nog geen ondersteuning voor schrijfbare schrijf nieuwe poging. Client-stuurprogramma's moeten de URL-parameter 'retryWrites=false' toevoegen aan hun connection string. Meer URL-parameters kunnen worden toegevoegd door ze vooraf te laten gaan door een '&'.

Sharding

Azure Cosmos DB biedt ondersteuning voor automatische sharding aan serverzijde. Het beheert automatisch Shard maken, plaatsen en balanceren. Azure Cosmos DB biedt geen ondersteuning voor handmatige sharding-opdrachten, wat betekent dat u geen opdrachten hoeft aan te roepen zoals addShard, balancerStart, moveChunk enzovoort. U hoeft alleen de Shard-sleutel op te geven tijdens het maken van de containers of het uitvoeren van query's op de gegevens.

Sessies

Azure Cosmos DB biedt nog geen ondersteuning voor sessieopdrachten aan de serverzijde.

TTL (time-to-live)

Azure Cosmos DB biedt ondersteuning voor een time-to-live (TTL) op basis van de tijdstempel van het document. TTL kan worden ingeschakeld voor verzamelingen door naar Azure Portal te gaan.

Transacties

Transacties met meerdere documenten worden ondersteund binnen een niet-geharde verzameling. Transacties met meerdere documenten worden niet ondersteund in verzamelingen of in shard-verzamelingen. De time-out voor transacties is een vaste 5 seconden.

Gebruikers- en rolbeheer

Azure Cosmos DB biedt nog geen ondersteuning voor gebruikers en rollen. Cosmos DB biedt echter Azure RBAC (op rollen gebaseerd toegangsbeheer), wachtwoorden/sleutels voor lezen/schrijven en wachtwoorden/sleutels met het kenmerk alleen-lezen die kunnen worden verkregen via de Azure-portal (pagina Verbindingsreeks).

Schrijfprobleem

Sommige toepassingen zijn afhankelijk van een schrijfbewerking,waarmee het aantal reacties wordt opgegeven dat is vereist tijdens een schrijfbewerking. Vanwege de manier waarop replicatie op de achtergrond in Cosmos DB wordt afgehandeld, zijn alle schrijfbewerkingen automatisch Quorum-bewerkingen. Alle schrijfproblemen die in clientcode zijn opgegeven, worden genegeerd. Zie Consistentieniveaus gebruiken om de beschikbaarheid en prestaties te maximaliseren voor meer informatie.

Volgende stappen

  • Meer informatie over het gebruik van Studio 3T met de API voor MongoDB van Azure Cosmos DB.
  • Meer informatie over het gebruik van Robo 3T met de API voor MongoDB van Azure Cosmos DB.
  • Verken voorbeelden van MongoDB met de API van Azure Cosmos DB voor MongoDB.
  • Wilt u capaciteitsplanning voor een migratie naar Azure Cosmos DB? U kunt informatie over uw bestaande databasecluster gebruiken voor capaciteitsplanning.
    • Als u alleen het aantal vcores en servers in uw bestaande databasecluster weet, leest u over het schatten van aanvraageenheden met behulp van vCores of vCCPUs
    • Als u de gebruikelijke aanvraagsnelheden voor uw huidige databaseworkload kent, leest u over het schatten van aanvraageenheden met behulp Azure Cosmos DB capacity planner