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:
$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 $lookupletpipeline -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