Dela via


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ång
  • 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 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.

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