Azure Cosmos DB for MongoDB (4.2-serverversion): Funktioner och syntax som stöds
GÄLLER FÖR: MongoDB
Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera modeller. Azure Cosmos DB erbjuder flera databas-API:er. Du kan kommunicera med Azure Cosmos DB för MongoDB med någon av MongoDB-klientdrivrutinerna med öppen källkod. Azure Cosmos DB for MongoDB stöder användning av befintliga klientdrivrutiner genom att följa MongoDB-trådprotokollet.
Genom att använda Azure Cosmos DB för MongoDB kan du dra nytta av fördelarna med 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 i artikeln. 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+-versionen av konton en slutpunkt i formatet *.mongo.cosmos.azure.com
. 3.2-versionen av konton har en slutpunkt 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. I följande avsnitt 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.
Fråga och skriv-åtgärdskommandon
Command | Stöds |
---|---|
change streams |
Ja |
delete |
Ja |
eval |
No |
find |
Ja |
findAndModify |
Ja |
getLastError |
Ja |
getMore |
Ja |
getPrevError |
No |
insert |
Ja |
parallelCollectionScan |
Nej |
resetError |
Nej |
update |
Ja |
Transaktionskommandon
Kommentar
Transaktioner med flera dokument stöds endast i en enda icke-fragmenterad samling. Transaktioner mellan och flera fragment med flera dokument stöds ännu inte i API:et för MongoDB.
Command | Stöds |
---|---|
abortTransaction |
Ja |
commitTransaction |
Ja |
Autentiseringskommandon
Command | Stöds |
---|---|
authenticate |
Ja |
getnonce |
Ja |
logout |
Ja |
Administrationskommandon
Command | Stöds |
---|---|
cloneCollectionAsCapped |
Nej |
collMod |
Nej |
connectionStatus |
Nej |
convertToCapped |
Nej |
copydb |
Nej |
create |
Ja |
createIndexes |
Ja |
currentOp |
Ja |
drop |
Ja |
dropDatabase |
Ja |
dropIndexes |
Ja |
filemd5 |
Ja |
killCursors |
Ja |
killOp |
No |
listCollections |
Ja |
listDatabases |
Ja |
listIndexes |
Ja |
reIndex |
Ja |
renameCollection |
Nej |
Diagnostiska kommandon
Command | Stöds |
---|---|
buildInfo |
Ja |
collStats |
Ja |
connPoolStats |
Nej |
connectionStatus |
Nej |
dataSize |
Nej |
dbHash |
Nej |
dbStats |
Ja |
explain |
Ja |
features |
No |
hostInfo |
Ja |
listDatabases |
Ja |
listCommands |
Nej |
profiler |
Nej |
serverStatus |
Nej |
top |
Nej |
whatsmyuri |
Ja |
Sammansättningspipeline
Azure Cosmos DB for MongoDB stöder följande aggregeringskommandon.
Sammansättningskommandon
Command | Stöds |
---|---|
aggregate |
Ja |
count |
Ja |
distinct |
Ja |
mapReduce |
Nej |
Sammansättningsfaser
Command | Stöds |
---|---|
addFields |
Ja |
bucket |
Nej |
bucketAuto |
Nej |
changeStream |
Ja |
collStats |
No |
count |
Ja |
currentOp |
No |
facet |
Ja |
geoNear |
Ja |
graphLookup |
No |
group |
Ja |
indexStats |
No |
limit |
Ja |
listLocalSessions |
Nej |
listSessions |
Nej |
lookup |
Delvis |
match |
Ja |
merge |
Ja |
out |
Ja |
planCacheStats |
Ja |
project |
Ja |
redact |
Ja |
regexFind |
Ja |
regexFindAll |
Ja |
regexMatch |
Ja |
replaceRoot |
Ja |
replaceWith |
Ja |
sample |
Ja |
set |
Ja |
skip |
Ja |
sort |
Ja |
sortByCount |
Ja |
unset |
Ja |
unwind |
Ja |
Kommentar
Aggregeringen $lookup
stöder ännu inte den okorrigeringsfunktion för underfrågor som introduceras i serverversion 3.6. Om du försöker använda operatorn $lookup
med fälten let
och pipeline
visas ett felmeddelande som anger att det let
inte stöds .
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 som har 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 |
round |
Ja |
sqrt |
Ja |
subtract |
Ja |
trunc |
Ja |
Trigonometriuttryck
Command | Stöds |
---|---|
acos |
Ja |
acosh |
Ja |
asin |
Ja |
asinh |
Ja |
atan |
Ja |
atan2 |
Ja |
atanh |
Ja |
cos |
Ja |
cosh |
Ja |
degreesToRadians |
Ja |
radiansToDegrees |
Ja |
sin |
Ja |
sinh |
Ja |
tan |
Ja |
tanh |
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 |
---|---|
$$CLUSTERTIME |
Ja |
$$CURRENT |
Ja |
$$DESCEND |
Ja |
$$KEEP |
Ja |
$$NOW |
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 är kodade i MongoDB BSON-format. Version 4.0 och senare (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 skrivs eller uppdateras via en slutpunkt som kör 4.0+ drar nytta av den här optimeringen.
I ett uppgraderingsscenario drar dokument som skrevs 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öd 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 endast samlingar som skapas efter att den här funktionen har aktiverats. När den här funktionen har aktiverats för ditt databaskonto kan den inte inaktiveras.
Om du vill aktivera stöd för 16 MB dokument ändrar du inställningen på fliken Funktioner för resursen i Azure Portal eller lägger till EnableMongo16MBDocumentSupport
funktionen programmatiskt.
Vi rekommenderar att du aktiverar återförsök på serversidan och undviker att använda jokerteckenindex för att säkerställa att begäranden i större dokument lyckas. Att höja dina enheter för databas- eller samlingsbegäran kan också hjälpa prestanda.
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
Azure Cosmos DB for MongoDB stöder följande indexkommandon 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 |
Stöds endast för unika index |
Case Insensitive |
Nej |
Sparse |
Nej |
Background |
Ja |
Operatorer
Azure Cosmos DB for MongoDB stöder följande 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 $regex
frågor tillåter vänsteranknerade uttryck indexsökning. Men om du använder i
modifieraren (skiftlägesokänslighet) och m
modifieraren (flera streck) genomsöks samlingen i alla uttryck.
När det finns ett behov av att inkludera $
eller |
är det bäst att skapa två (eller flera) $regex
frågor.
Ändra till exempel följande ursprungliga fråga:
find({x:{$regex: /^abc$/})
Till den här frågan:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
Den första delen av den ändrade frågan använder indexet för att begränsa sökningen till dokument som börjar med ^abc
. Den andra delen av frågan matchar de exakta posterna. Stapeloperatorn (|
) fungerar som en "eller"-funktion. Frågan find({x:{$regex: /^abc |^def/})
matchar de dokument där fältet x
har värden som börjar med abc
eller def
. Om du vill använda indexet rekommenderar vi att du delar upp frågan i två olika frågor som är kopplade till 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 åtgärden findOneAndUpdate
stöds sorteringsåtgärder i ett enda fält. Sorteringsåtgärder på flera fält stöds inte.
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.
Kryptering på fältnivå på klientsidan
Fältkryptering på klientnivå är en drivrutinsfunktion och är kompatibel med API:et för MongoDB. Explicit kryptering, där drivrutinen uttryckligen krypterar varje fält när det skrivs, stöds. Automatisk kryptering stöds inte. Explicit dekryptering och automatisk dekryptering stöds.
mongocryptd
Bör inte köras eftersom det inte behövs för att utföra någon av de åtgärder som stöds.
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. Den här logiken utökas också för att uppnå global replikering med låg latens. Azure Cosmos DB stöder inte manuella replikeringskommandon.
Återförsöksbara skrivningar
Funktionen för återförsöksbara skrivningar gör det möjligt för MongoDB-drivrutiner att automatiskt försöka utföra vissa skrivåtgärder på nytt. Funktionen 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.
Om du till exempel "country"
vill ta bort alla dokument som har fältet "city" = "NYC"
måste programmet köra åtgärden för alla shardnyckelvärden ("country"
) om funktionen för återförsöksbara skrivningar är aktiverad.
db.coll.deleteMany({"country": "USA", "city": "NYC"})
- Framgångdb.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 Portal.
Horisontell partitionering
Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar automatiskt skapande, placering och balansering av fragment. Azure Cosmos DB stöder inte manuella partitioneringskommandon, vilket innebär att du inte behöver anropa kommandon som addShard
, balancerStart
och moveChunk
. 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.
Time to Live
Azure Cosmos DB stöder en TTL (Time to Live) som baseras på dokumentets tidsstämpel. Du kan aktivera TTL för en samling i Azure Portal.
Anpassad TTL
Den här funktionen ger möjlighet att ange en anpassad TTL på ett fält i en samling.
I en samling som har TTL aktiverat i ett fält:
Godtagbara typer är BSON-datatypen och numeriska typer (heltal, lång eller dubbel), som tolkas som en Unix-millisekunders tidsstämpel för att fastställa förfallodatum.
Om TTL-fältet är en matris beaktas det minsta elementet i matrisen som är av en acceptabel typ för dokumentförfallodatum.
Om TTL-fältet saknas i ett dokument upphör dokumentet inte att gälla.
Om TTL-fältet inte är en acceptabel typ upphör dokumentet inte att gälla.
Begränsningar för en anpassad TTL
Endast ett fält i en samling kan ha en TTL inställd på den.
Med en anpassad TTL-fältuppsättning kan fältet
\_ts
inte användas för dokumentets förfallodatum.Du kan inte använda fältet
\_ts
i tillägg.
Konfiguration
Du kan aktivera en anpassad TTL genom att EnableTtlOnCustomPath
uppdatera funktionen för kontot. Lär dig hur du konfigurerar funktioner.
Konfigurera TTL
Kör det här kommandot för att konfigurera TTL: db.coll.createIndex({"YOUR_CUSTOM_TTL_FIELD":1}, {expireAfterSeconds: 10})
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.
Hantera användare och roller
Azure Cosmos DB har ännu inte stöd för användare och roller. Azure Cosmos DB stöder dock rollbaserad åtkomstkontroll i Azure (Azure RBAC) och skrivskyddade och skrivskyddade lösenord och nycklar som kan hämtas via Azure Portal (på sidan Anslutningssträngar).
Skrivproblem
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. Alla skrivproblem som anges av klientkoden ignoreras. Lär dig hur du använder konsekvensnivåer för att maximera tillgänglighet och prestanda.
Nästa steg
- Lär dig hur du använder Studio 3T med Azure Cosmos DB för MongoDB.
- Lär dig hur du använder Robo 3T med Azure Cosmos DB för MongoDB.
- 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.
- Om allt du vet är antalet virtuella kärnor och servrar i ditt befintliga databaskluster läser du om att uppskatta enheter för begäranden med hjälp av virtuella kärnor eller virtuella kärnor.
- Om du känner till vanliga begärandefrekvenser för din aktuella databasarbetsbelastning kan du läsa om att uppskatta enheter för begäranden med hjälp av Kapacitetshanteraren för Azure Cosmos DB.