Dela via


Funktioner och syntax som stöds i Azure Cosmos DB för MongoDB 4.2-serverversion

Med Azure Cosmos DB för MongoDB 4.2 kan du använda välbekanta MongoDB-funktioner med funktioner i företagsklass som global distribution, automatisk horisontell partitionering och hög tillgänglighet. I den här artikeln beskrivs vilka funktioner, syntax och fördelar som stöds med att använda Azure Cosmos DB för MongoDB 4.2.

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

Stöds
change streams ✅ Ja
delete ✅ Ja
eval ✖️ Nej
find ✅ Ja
findAndModify ✅ Ja
getLastError ✅ Ja
getMore ✅ Ja
getPrevError ✖️ Nej
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.

Stöds
abortTransaction ✅ Ja
commitTransaction ✅ Ja

Autentiseringskommandon

Stöds
authenticate ✅ Ja
getnonce ✅ Ja
logout ✅ Ja

Administrationskommandon

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 ✖️ Nej
listCollections ✅ Ja
listDatabases ✅ Ja
listIndexes ✅ Ja
reIndex ✅ Ja
renameCollection ✖️ Nej

Diagnostiska kommandon

Stöds
buildInfo ✅ Ja
collStats ✅ Ja
connPoolStats ✖️ Nej
connectionStatus ✖️ Nej
dataSize ✖️ Nej
dbHash ✖️ Nej
dbStats ✅ Ja
explain ✅ Ja
features ✖️ Nej
hello ✅ Ja
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

Stöds
aggregate ✅ Ja
count ✅ Ja
distinct ✅ Ja
mapReduce ✖️ Nej

Sammansättningsfaser

Stöds
addFields ✅ Ja
bucket ✖️ Nej
bucketAuto ✖️ Nej
changeStream ✅ Ja
collStats ✖️ Nej
count ✅ Ja
currentOp ✖️ Nej
facet ✅ Ja
geoNear ✅ Ja
graphLookup ✖️ Nej
group ✅ Ja
indexStats ✖️ Nej
limit ✅ Ja
listLocalSessions ✖️ Nej
listSessions ✖️ Nej
lookup ❓Partiell
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 inte funktionen för okorrigering av underfrågor som introducerades i serverversion 3.6. Om du använder operatorn $lookup med fälten let och pipeline visas ett felmeddelande som anger att "let inte stöds".

Booleska uttryck

Stöds
and ✅ Ja
not ✅ Ja
or ✅ Ja

Konverteringsuttryck

Stöds
convert ✅ Ja
toBool ✅ Ja
toDate ✅ Ja
toDecimal ✅ Ja
toDouble ✅ Ja
toInt ✅ Ja
toLong ✅ Ja
toObjectId ✅ Ja
toString ✅ Ja

Uttryck för angivelse

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.

Stöds
cmp ✅ Ja
eq ✅ Ja
gt ✅ Ja
gte ✅ Ja
lt ✅ Ja
lte ✅ Ja
ne ✅ Ja
in ✅ Ja
nin ✅ Ja

Aritmetiska uttryck

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

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

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

Stöds
meta ✖️ Nej

Matrisuttryck

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

Stöds
map ✅ Ja
let ✅ Ja

Systemvariabler

Stöds
$$CLUSTERTIME ✅ Ja
$$CURRENT ✅ Ja
$$DESCEND ✅ Ja
$$KEEP ✅ Ja
$$NOW ✅ Ja
$$PRUNE ✅ Ja
$$REMOVE ✅ Ja
$$ROOT ✅ Ja

Literaloperator

Stöds
literal ✅ Ja

Datumuttryck

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

Stöds
cond ✅ Ja
ifNull ✅ Ja
switch ✅ Ja

Datatypsoperator

Stöds
type ✅ Ja

Ackumulatoruttryck

Stöds
sum ✅ Ja
avg ✅ Ja
first ✅ Ja
last ✅ Ja
max ✅ Ja
min ✅ Ja
push ✅ Ja
addToSet ✅ Ja
stdDevPop ✅ Ja
stdDevSamp ✅ Ja

Kopplingsoperator

Stöds
mergeObjects ✅ Ja

Datatyper

Azure Cosmos DB for MongoDB stöder dokument som är kodade i mongoDB-binärt JSON-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 till version 4.0 eller senare drar dokument som skapats före uppgraderingen inte omedelbart nytta av den förbättrade prestandan. Om du vill dra nytta av förbättringarna uppdaterar du dokumenten via en skrivåtgärd med hjälp av 4.0-slutpunkten.

Stöd för 16 MB dokument höjer storleksgränsen för dokument från 2 MB till 16 MB. Den här gränsen gäller endast för samlingar som skapats när funktionen har aktiverats. När du har aktiverat den här funktionen för ett 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.

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

Stöds
Single Field Index ✅ Ja
Compound Index ✅ Ja
Multikey Index ✅ Ja
Text Index ✖️ Nej
2dsphere ✅ Ja
2d Index ✖️ Nej
Hashed Index ✖️ Nej

Indexegenskaper

Stöds
TTL ✅ Ja
Unique ✅ Ja
Partial ❓Partiell
Case Insensitive ✖️ Nej
Sparse ✖️ Nej
Background ✅ Ja

Tips/Råd

Partial stöds endast för unika index.

Operatorer

Azure Cosmos DB for MongoDB stöder följande operatorer.

Logiska operatorer

Stöds
or ✅ Ja
and ✅ Ja
not ✅ Ja
nor ✅ Ja

Elementoperatorer

Stöds
exists ✅ Ja
type ✅ Ja

Frågeoperatorer för utvärdering

Stöds
expr ✅ Ja
jsonSchema ✖️ Nej
mod ✅ Ja
regex ✅ Ja
text ✖️ Nej
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 or 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 delar du upp frågan i två separata frågor och kopplar dem till operatorn $or : find({$or: [{x: {$regex: /^abc/}}, {x: {$regex: /^def/}}]}).

Tips/Råd

Kommandot text stöds inte. Använd $regex i stället.

Matrisoperatorer

Stöds
all ✅ Ja
elemMatch ✅ Ja
size ✅ Ja

Kommentarsoperator

Stöds
comment ✅ Ja

Projektionsoperatorer

Stöds
elemMatch ✅ Ja
meta ✖️ Nej
slice ✅ Ja

Uppdateringsoperatorer

Fältuppdateringsoperatorer

Stöds
inc ✅ Ja
mul ✅ Ja
rename ✅ Ja
setOnInsert ✅ Ja
set ✅ Ja
unset ✅ Ja
min ✅ Ja
max ✅ Ja
currentDate ✅ Ja

Matrisuppdateringsoperatorer

Stöds
$ ✅ Ja
$[] ✅ Ja
$[\<identifier\>] ✅ Ja
addToSet ✅ Ja
pop ✅ Ja
pullAll ✅ Ja
pull ✅ Ja
push ✅ Ja
pushAll ✅ Ja

Uppdatera modifierare

Stöds
each ✅ Ja
slice ✅ Ja
sort ✅ Ja
position ✅ Ja

Binär uppdateringsoperator

Stöds
bit ✅ Ja
bitsAllSet ✖️ Nej
bitsAnySet ✖️ Nej
bitsAllClear ✖️ Nej
bitsAnyClear ✖️ Nej

Geospatiala operatorer

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 fungerar med Azure Cosmos DB för MongoDB. Explicit kryptering, där drivrutinen krypterar varje fält under skrivåtgärder, 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.

Med till exempel en fragmenterad samling, shardad på nyckeln region: Om du vill ta bort alla dokument med fältet city = "NYC"måste programmet köra åtgärden för alla värden för shardnyckel (region) om återförsöksbara skrivningar är aktiverade.

  • db.coll.deleteMany({"region": "USA", "city": "NYC"}) – Lyckas med meddelandet Success
  • db.coll.deleteMany({"city": "NYC"}) – Misslyckas med fel ShardKeyNotFound(61)

Kommentar

Funktionen för å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, balancerStartoch 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.

Tid att leva

Azure Cosmos DB tillhandahåller en TTL-funktion (Time to Live) baserat på dokumentets tidsstämpel. Aktivera TTL för en samling i Azure-portalen.

Anpassad TTL

Med den här funktionen kan du ange ett anpassat TTL-värde för ett enda fält i en samling. Dokument upphör att gälla baserat på värdet för det här fältet.

I en samling som har TTL aktiverat i ett fält:

  • Godtagbara typer är binär JSON-datatyp (BSON) 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 har dock stöd för rollbaserad åtkomstkontroll i Azure och skrivskyddade och skrivskyddade lösenord och nycklar som kan hämtas via Azure-portalen (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. Azure Cosmos DB ignorerar alla skrivproblem som anges av klientkoden. Lär dig hur du använder konsekvensnivåer för att maximera tillgänglighet och prestanda.