Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera datamodeller. Du kan kommunicera med Azure Cosmos DB API för MongoDB med någon av MongoDB-klientdrivrutinerna med öppen källkod. Azure Cosmos DB:s API för MongoDB tillåter gör det möjligt att använda befintliga klientdrivrutiner genom att följa MongoDB-trådprotokollet.
Genom att använda Azure Cosmos DB:s API för MongoDB kan du dra nytta av fördelarna med den MongoDB som du är van vid, med alla företagsfunktioner som Cosmos DB tillhandahåller: global distribution,automatisk horisontellpartitionering, garantier för tillgänglighet och svarstid, kryptering i vila, säkerhetskopior och mycket mer.
Protokollstöd
De operatorer som stöds och eventuella begränsningar eller undantag anges nedan. Klientdrivrutiner som förstår dessa protokoll bör kunna ansluta till Cosmos DB:s API för MongoDB. När du Azure Cosmos DB API:et för MongoDB-konton har 3.6+-versionerna av konton slutpunkten i formatet medan *.mongo.cosmos.azure.com 3.2-versionen av kontona har slutpunkten i formatet *.documents.azure.com .
Anteckning
Den här artikeln visar bara de serverkommandon som stöds och exkluderar funktioner på klientsidan. Omslutningsfunktionerna på klientsidan, deleteMany() till exempel och använder updateMany() kommandona och internt på delete()update() servern. Funktioner som använder serverkommandon som stöds är kompatibla Azure Cosmos DB api:et för MongoDB.
Stöd för frågespråk
Azure Cosmos DB:s API för MongoDB erbjuder omfattande stöd för MongoDB-frågespråkskonstruktioner. Nedan hittar du en detaljerad lista över åtgärder, operatorer, faser, kommandon och alternativ som stöds för närvarande.
Databaskommandon
Azure Cosmos DB:s API för MongoDB stöder följande databaskommandon:
$lookup stöder ännu inte funktionen okoronrelaterade underfrågor som introducerades i serverversion 3.6. Du får ett felmeddelande med ett meddelande som let is not supported innehåller om du försöker använda $lookup operatorn med fälten och letpipeline .
Booleska uttryck
Kommando
Stöds
$and
Ja
$not
Ja
$or
Ja
Konverteringsuttryck
Kommando
Stöds
$convert
Ja
$toBool
Ja
$toDate
Ja
$toDecimal
Ja
$toDouble
Ja
$toInt
Ja
$toLong
Ja
$toObjectId
Ja
$toString
Ja
Uttryck för angivelse
Kommando
Stöds
$setEquals
Ja
$setIntersection
Ja
$setUnion
Ja
$setDifference
Ja
$setIsSubset
Ja
$anyElementTrue
Ja
$allElementsTrue
Ja
Jämförelseuttryck
Anteckning
API:et för MongoDB stöder inte jämförelseuttryck med en matrislitteral i frågan.
Kommando
Stöds
$cmp
Ja
$eq
Ja
$gt
Ja
$gte
Ja
$lt
Ja
$lte
Ja
$ne
Ja
$in
Ja
$nin
Ja
Aritmetiska uttryck
Kommando
Stöds
$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
Stränguttryck
Kommando
Stöds
$concat
Ja
$indexOfBytes
Ja
$indexOfCP
Ja
$ltrim
Ja
$rtrim
Ja
$trim
Ja
$split
Ja
$strLenBytes
Ja
$strLenCP
Ja
$strcasecmp
Ja
$substr
Ja
$substrBytes
Ja
$substrCP
Ja
$toLower
Ja
$toUpper
Ja
Textsökningsoperator
Kommando
Stöds
$meta
Nej
Matrisuttryck
Kommando
Stöds
$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
Variabeloperatorer
Kommando
Stöds
$map
Ja
$let
Ja
Systemvariabler
Kommando
Stöds
$$CURRENT
Ja
$$DESCEND
Ja
$$KEEP
Ja
$$PRUNE
Ja
$$REMOVE
Ja
$$ROOT
Ja
Literaloperator
Kommando
Stöds
$literal
Ja
Datumuttryck
Kommando
Stöds
$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
Villkorliga uttryck
Kommando
Stöds
$cond
Ja
$ifNull
Ja
$switch
Ja
Operator för datatyp
Kommando
Stöds
$type
Ja
Ackumulatoruttryck
Kommando
Stöds
$sum
Ja
$avg
Ja
$first
Ja
$last
Ja
$max
Ja
$min
Ja
$push
Ja
$addToSet
Ja
$stdDevPop
Ja
$stdDevSamp
Ja
Sammanslagningsoperator
Kommando
Stöds
$mergeObjects
Ja
Datatyper
Azure Cosmos DB API för MongoDB stöder dokument som kodats i MongoDB BSON-format. API-versionen 4.0 förbättrar den interna användningen av det här formatet för att förbättra prestanda och minska kostnaderna. Dokument som skrivits eller uppdaterats via en slutpunkt som kör 4.0 drar nytta av detta.
I ett uppgraderingsscenariokommer dokument som skrivits före uppgraderingen till version 4.0 inte att dra nytta av den förbättrade prestandan förrän de uppdateras via en skrivåtgärd via 4.0-slutpunkten.
Kommando
Stöds
Double
Ja
Sträng
Ja
Objekt
Ja
Matris
Ja
Binära data
Ja
ObjectId
Ja
Boolesk
Ja
Datum
Ja
Null
Ja
32-bitars heltal (int)
Ja
Timestamp
Ja
64-bitars heltal (långt)
Ja
MinKey
Ja
MaxKey
Ja
Decimal128
Ja
Reguljärt uttryck
Ja
JavaScript
Ja
JavaScript (med omfång)
Ja
Undefined (Odefinierad)
Ja
Index och indexegenskaper
Index
Kommando
Stöds
Index för enstaka fält
Ja
Sammansatt index
Ja
Multikey-index
Ja
Textindex
Nej
2dsphere
Ja
2d-index
Nej
Hash-index
Ja
Indexegenskaper
Kommando
Stöds
TTL
Ja
Unik
Ja
Delvis
Nej
Okänsligt fall
Nej
Utspridda
Nej
Bakgrund
Ja
Operatorer
Logiska operatorer
Kommando
Stöds
$or
Ja
$and
Ja
$not
Ja
$nor
Ja
Elementoperatorer
Kommando
Stöds
$exists
Ja
$type
Ja
Frågeoperatorer för utvärdering
Kommando
Stöds
$expr
Nej
$jsonSchema
Nej
$mod
Ja
$regex
Ja
$text
Nej (stöds inte. Använd $regex i stället.)
$where
Nej
I $regex-frågor tillåter vänsterankarbaserade uttryck indexsökning. Om du använder modifierarna i (skiftlägesokänsligt) och m (flera rader) så får du dock samlingsskanningen i alla uttryck.
När det finns ett behov att inkludera $ eller | så är det bäst att skapa två (eller flera) regex-frågor. Till exempel med följande ursprungliga fråga: find({x:{$regex: /^abc$/}) , måste den ändras på följande sätt:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
Den första delen använder indexet för att begränsa sökningen till dokument som börjar med ^abc och den andra delen matchar de exakta posterna. Fält-operatorn | fungerar som en or-funktion – frågan find({x:{$regex: /^abc |^def/}) matchar dokumenten där fältet x har värden som börjar med abc eller def. Om du vill använda indexet så rekommenderar vi att du delar upp frågan i två olika frågor anslutna med operatorn $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Matrisoperatorer
Kommando
Stöds
$all
Ja
$elemMatch
Ja
$size
Ja
Kommentarsoperator
Kommando
Stöds
$comment
Ja
Projektionsoperatorer
Kommando
Stöds
$elemMatch
Ja
$meta
Nej
$slice
Ja
Uppdateringsoperatorer
Fältuppdateringsoperatorer
Kommando
Stöds
$inc
Ja
$mul
Ja
$rename
Ja
$setOnInsert
Ja
$set
Ja
$unset
Ja
$min
Ja
$max
Ja
$currentDate
Ja
Matrisuppdateringsoperatorer
Kommando
Stöds
$
Ja
$[]
Ja
$[<identifier>]
Ja
$addToSet
Ja
$pop
Ja
$pullAll
Ja
$pull
Ja
$push
Ja
$pushAll
Ja
Uppdateringsmodifierare
Kommando
Stöds
$each
Ja
$slice
Ja
$sort
Ja
$position
Ja
Binär uppdateringsoperator
Kommando
Stöds
$bit
Ja
$bitsAllSet
Nej
$bitsAnySet
Nej
$bitsAllClear
Nej
$bitsAnyClear
Nej
Geospatiala operatorer
Operator
Stöds
$geoWithin
Ja
$geoIntersects
Ja
$near
Ja
$nearSphere
Ja
$geometry
Ja
$minDistance
Ja
$maxDistance
Ja
$center
Nej
$centerSphere
Nej
$box
Nej
$polygon
Nej
Sortera åtgärder
Med åtgärden findOneAndUpdate kan du använda sorteringsåtgärder på ett enda fält, men inte på flera fält.
Indexering
API:et för MongoDB stöder en mängd olika index för att möjliggöra sortering på flera fält, förbättra frågeprestanda och framtvinga unikhet.
GridFS
Azure Cosmos DB stöd för GridFS via valfri GridFS-kompatibel Mongo-drivrutin.
Replikering
Azure Cosmos DB stöder automatisk, inbyggd replikering på de understa lagren. Denna logik utökas för att även uppnå global replikering med låga svarstider. Cosmos DB stöder inte manuella replikeringskommandon.
Återförsöksbara skrivningar
Cosmos DB har ännu inte stöd för återförsöksbara skrivningar. Klientdrivrutiner måste lägga till URL-parametern "retryWrites=false" i anslutningssträngen. Du kan lägga till fler URL-parametrar genom att lägga till prefixet "&".
Horisontell partitionering
Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar automatiskt skapande, placering och utjämning av shard. Azure Cosmos DB stöder inte manuella kommandon för horisontell partitionering, vilket innebär att du inte behöver anropa kommandon som addShard, balancerStart, moveChunk osv. Du behöver bara ange shardnyckeln när du skapar containrarna eller frågar efter data.
Sessioner
Azure Cosmos DB stöder ännu inte sessionskommandon på serversidan.
TTL-värde (time to live)
Azure Cosmos DB har stöd för TTL (Time to Live) baserat på dokumentets tidsstämpel. Du kan aktivera TTL för samlingar genom att gå till Azure Portal.
Transaktioner
Transaktioner med flera dokument stöds i en oskadd samling. Transaktioner med flera dokument stöds inte i samlingar eller i fragmenterade samlingar. Tidsgränsen för transaktioner är fast 5 sekunder.
Användar- och rollhantering
Azure Cosmos DB stöder ännu inte användare och roller. Men Cosmos DB har stöd för rollbaserad åtkomstkontroll i Azure (Azure RBAC) och skrivskyddade och skrivskyddade lösenord/nycklar som kan hämtas via Azure Portal (sidan Anslutningssträng).
Skrivanmärkningar
Vissa program förlitar sig på en Write Concern, som anger antalet svar som krävs under en skrivåtgärd. På grund av hur Cosmos DB hanterar replikering i bakgrunden är alla skrivningar automatiskt kvorumskrivningar som standard. Skrivanmärkningar som anges av klientkoden ignoreras. Läs mer om hur du maximerar tillgänglighet och prestanda med hjälp av konsekvensnivåer.
Nästa steg
Lär dig hur du använder Studio 3T med Azure Cosmos DB:s API för MongoDB.
Lär dig hur du använder Robo 3T med Azure Cosmos DB:s API för MongoDB.
Utforska MongoDB-exempel med Azure Cosmos DB:s API för MongoDB.
Försöker du göra kapacitetsplanering för en migrering till Azure Cosmos DB? Du kan använda information om ditt befintliga databaskluster för kapacitetsplanering.
Om allt du vet är antalet virtuella kärnor och servrar i ditt befintliga databaskluster kan du läsa om att uppskatta enheter för programbegäran med hjälp av virtuella kärnor eller virtuella processorer
Om du känner till typiska begärandefrekvenser för din aktuella databasarbetsbelastning kan du läsa om att uppskatta enheter för programbegäran Azure Cosmos DB kapacitetsplaneraren