Azure Cosmos DB for MongoDB (4.0-serverversion): funktioner och syntax som stöds
Artikel
GÄLLER FÖR: MongoDB
Azure Cosmos DB är Microsofts globalt distribuerade flermodellsdatabastjänst. Du kan kommunicera med Azure Cosmos DB for MongoDB med någon av MongoDB-klientdrivrutinerna med öppen källkod. Med Azure Cosmos DB for MongoDB kan du använda befintliga klientdrivrutiner genom att följa MongoDB-trådprotokollet.
Genom att använda Azure Cosmos DB for MongoDB kan du dra nytta av fördelarna med den MongoDB som du är van vid, med alla företagsfunktioner som Azure Cosmos DB tillhandahåller: global distribution, automatisk horisontell partitionering, 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. Alla klientdrivrutiner som förstår dessa protokoll bör kunna ansluta till Azure Cosmos DB för MongoDB. När du skapar Azure Cosmos DB för MongoDB-konton har 3,6+ versioner av konton slutpunkten i formatet *.mongo.cosmos.azure.com medan 3.2-versionen av konton har slutpunkten i formatet *.documents.azure.com.
Kommentar
Den här artikeln visar endast serverkommandon som stöds och exkluderar omslutningsfunktioner på klientsidan. Omslutningsfunktioner på klientsidan, till exempel deleteMany() och updateMany() internt, använder kommandona delete() och update() server. Funktioner som använder serverkommandon som stöds är kompatibla med Azure Cosmos DB för MongoDB.
Stöd för frågespråk
Azure Cosmos DB for MongoDB ger omfattande stöd för MongoDB-frågespråkskonstruktioner. Nedan hittar du en detaljerad lista över åtgärder som stöds för närvarande, operatorer, steg, kommandon och alternativ.
Databaskommandon
Azure Cosmos DB for MongoDB stöder följande databaskommandon:
$lookup stöder ännu inte den okorrigeringsfunktion för underfrågor som introducerades i serverversion 3.6. Du får ett felmeddelande med ett meddelande som innehåller let is not supported om du försöker använda operatorn $lookup med let och pipeline fält.
Booleska uttryck
Command
Stöds
and
Ja
not
Ja
or
Ja
Konverteringsuttryck
Command
Stöds
convert
Ja
toBool
Ja
toDate
Ja
toDecimal
Ja
toDouble
Ja
toInt
Ja
toLong
Ja
toObjectId
Ja
toString
Ja
Uttryck för angivelse
Command
Stöds
setEquals
Ja
setIntersection
Ja
setUnion
Ja
setDifference
Ja
setIsSubset
Ja
anyElementTrue
Ja
allElementsTrue
Ja
Jämförelseuttryck
Kommentar
API:et för MongoDB stöder inte jämförelseuttryck med en matrisliteral i frågan.
Command
Stöds
cmp
Ja
eq
Ja
gt
Ja
gte
Ja
lt
Ja
lte
Ja
ne
Ja
in
Ja
nin
Ja
Aritmetiska uttryck
Command
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
Command
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
Command
Stöds
meta
Nej
Matrisuttryck
Command
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
Command
Stöds
map
Ja
let
Ja
Systemvariabler
Command
Stöds
$$CURRENT
Ja
$$DESCEND
Ja
$$KEEP
Ja
$$PRUNE
Ja
$$REMOVE
Ja
$$ROOT
Ja
Literaloperator
Command
Stöds
literal
Ja
Datumuttryck
Command
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
Command
Stöds
cond
Ja
ifNull
Ja
switch
Ja
Datatypsoperator
Command
Stöds
type
Ja
Ackumulatoruttryck
Command
Stöds
sum
Ja
avg
Ja
first
Ja
last
Ja
max
Ja
min
Ja
push
Ja
addToSet
Ja
stdDevPop
Ja
stdDevSamp
Ja
Kopplingsoperator
Command
Stöds
mergeObjects
Ja
Datatyper
Azure Cosmos DB for MongoDB stöder dokument som kodas i MongoDB BSON-format. 4.0 API-versionen 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 optimering.
I ett uppgraderingsscenario drar dokument som skrivits före uppgraderingen till version 4.0+ inte nytta av den förbättrade prestandan förrän de uppdateras via en skrivåtgärd via 4.0+-slutpunkten.
Stödet för dokument på upp till 16 MB höjer storleksgränsen för dina dokument från 2 MB till 16 MB. Den här gränsen gäller bara samlingar som skapas efter att funktionen har aktiverats. När den här funktionen har aktiverats för ditt databaskonto kan den inte inaktiveras.
Aktivering av 16 MB kan göras på funktionsfliken i Azure-portalen eller programmatiskt genom att lägga till funktionen "EnableMongo16MBDocumentSupport".
Vi rekommenderar att du aktiverar återförsök på serversidan och undviker jokerteckenindex för att säkerställa att begäranden med större dokument lyckas. Om det behövs kan det också hjälpa att höja dina DB/Collection-RU:er.
Command
Stöds
Double
Ja
String
Ja
Object
Ja
Array
Ja
Binary Data
Ja
ObjectId
Ja
Boolean
Ja
Date
Ja
Null
Ja
32-bit Integer (int)
Ja
Timestamp
Ja
64-bit Integer (long)
Ja
MinKey
Ja
MaxKey
Ja
Decimal128
Ja
Regular Expression
Ja
JavaScript
Ja
JavaScript (with scope)
Ja
Undefined
Ja
Index och indexegenskaper
Index
Command
Stöds
Single Field Index
Ja
Compound Index
Ja
Multikey Index
Ja
Text Index
No
2dsphere
Ja
2d Index
Nej
Hashed Index
Nej
Indexegenskaper
Command
Stöds
TTL
Ja
Unique
Ja
Partial
Nej
Case Insensitive
Nej
Sparse
Nej
Background
Ja
Operatorer
Logiska operatorer
Command
Stöds
or
Ja
and
Ja
not
Ja
nor
Ja
Elementoperatorer
Command
Stöds
exists
Ja
type
Ja
Frågeoperatorer för utvärdering
Command
Stöds
expr
Ja
jsonSchema
No
mod
Ja
regex
Ja
text
Nej (stöds inte. Använd $regex i stället.)
where
Nej
I de $regex frågorna tillåter vänsteranknerade 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 av att inkludera '$' eller '|', är det bäst att skapa två (eller fler) regex-frågor. Med tanke på följande ursprungliga fråga: find({x:{$regex: /^abc$/})måste den till exempel ä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
Command
Stöds
all
Ja
elemMatch
Ja
size
Ja
Kommentarsoperator
Command
Stöds
comment
Ja
Projektionsoperatorer
Command
Stöds
elemMatch
Ja
meta
No
slice
Ja
Uppdateringsoperatorer
Fältuppdateringsoperatorer
Command
Stöds
inc
Ja
mul
Ja
rename
Ja
setOnInsert
Ja
set
Ja
unset
Ja
min
Ja
max
Ja
currentDate
Ja
Matrisuppdateringsoperatorer
Command
Stöds
$
Ja
$[]
Ja
$[\<identifier\>]
Ja
addToSet
Ja
pop
Ja
pullAll
Ja
pull
Ja
push
Ja
pushAll
Ja
Uppdatera modifierare
Command
Stöds
each
Ja
slice
Ja
sort
Ja
position
Ja
Binär uppdateringsoperator
Command
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
Sorteringsåtgärder
När du använder findOneAndUpdate åtgärden med API för MongoDB version 4.0 stöds sorteringsåtgärder i ett enda fält och flera fält. Sorteringsåtgärder på flera fält var en begränsning för tidigare trådprotokoll.
Indexering
API:et för MongoDB stöder olika index för att aktivera sortering på flera fält, förbättra frågeprestanda och framtvinga unikhet.
GridFS
Azure Cosmos DB stöder 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. Azure Cosmos DB stöder inte manuella replikeringskommandon.
Återförsöksbara skrivningar
Återförsöksbara skrivningar gör det möjligt för MongoDB-drivrutiner att automatiskt försöka utföra vissa skrivåtgärder igen om det uppstod ett fel, men resulterar i strängare krav för vissa åtgärder som matchar MongoDB-protokollkraven. Med den här funktionen aktiverad kräver uppdateringsåtgärder, inklusive borttagningar, i fragmenterade samlingar att shardnyckeln inkluderas i frågefiltret eller uppdateringsinstruktionen.
Till exempel med en fragmenterad samling, shardad på nyckeln "land": Om du vill ta bort alla dokument med fältstaden = "NYC"måste programmet köra åtgärden för alla värden för shardnyckel (land) om återförsöksbara skrivningar är aktiverade.
db.coll.deleteMany({"city": "NYC"}) – Misslyckas med felet ShardKeyNotFound(61)
Kommentar
Återförsöksbara skrivningar stöder inte massdefinierade skrivningar just nu. Om du vill utföra massskrivningar med återförsöksbara skrivningar aktiverade utför du massordade skrivningar.
Om du vill aktivera funktionen lägger du till funktionen EnableMongoRetryableWrites i ditt databaskonto. Den här funktionen kan också aktiveras på fliken Funktioner i Azure-portalen.
Horisontell partitionering
Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar skapande, placering och balansering av fragment automatiskt. Azure Cosmos DB stöder inte manuella partitioneringskommandon, 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 har ännu inte stöd för sessionskommandon på serversidan.
TTL-värde (time to live)
Azure Cosmos DB stöder en TTL (time-to-live) baserat på tidsstämpeln för dokumentet. TTL kan aktiveras för samlingar från Azure-portalen.
Transaktioner
Transaktioner med flera dokument stöds i en ohardad samling. Transaktioner med flera dokument stöds inte i samlingar eller i fragmenterade samlingar. Tidsgränsen för transaktioner är fasta 5 sekunder.
Användar- och rollhantering
Azure Cosmos DB har ännu inte stöd för användare och roller. Azure Cosmos DB har dock stöd för rollbaserad åtkomstkontroll i Azure (Azure RBAC) och skrivskyddade och skrivskyddade lösenord/nycklar som kan hämtas via Azure-portalen (sidan Anslutningssträng).
Skrivanmärkningar
Vissa program förlitar sig på ett skrivproblem, som anger antalet svar som krävs under en skrivåtgärd. På grund av hur Azure Cosmos DB hanterar replikering i bakgrunden är alla skrivningar automatiskt kvorum 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.
Utforska MongoDB-exempel med Azure Cosmos DB för MongoDB.
Försöker du planera kapacitet för en migrering till Azure Cosmos DB? Du kan använda information om ditt befintliga databaskluster för kapacitetsplanering.