Azure Cosmos DB API för MongoDB (serverversion 4.0): Funktioner och syntax som stöds

GÄLLER för: Azure Cosmos DB-API för MongoDB

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:

Fråga och skriv-åtgärdskommandon

Kommando Stöds
ändra dataströmmar Ja
delete Ja
Eval Nej
find Ja
findAndModify Ja
getLastError Ja
getMore Ja
getPrevError Nej
insert Ja
parallelCollectionScan Nej
resetError Nej
update Ja

Transaktionskommandon

Kommando Stöds
abortTransaction Ja
commitTransaction Ja

Autentiseringskommandon

Kommando Stöds
authenticate Ja
getnonce Ja
logout Ja

Administrationskommandon

Kommando Stöds
cloneCollectionAsCapped Nej
collMod Nej
connectionStatus Nej
convertToCapped Nej
copydb Nej
skapa 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

Kommando Stöds
buildInfo Ja
collStats Ja
connPoolStats Nej
connectionStatus Nej
dataSize Nej
dbHash Nej
dbStats Ja
Förklara Ja
funktioner Nej
hostInfo Ja
listDatabases Ja
listCommands Nej
profilerare Nej
serverStatus Nej
top Nej
whatsmyuri Ja

Sammansättningspipeline

Sammansättningskommandon

Kommando Stöds
aggregate Ja
count Ja
distinct Ja
mapReduce Nej

Sammansättningsfaser

Kommando Stöds
$addFields Ja
$bucket Nej
$bucketAuto Nej
$changeStream Ja
$collStats Nej
$count Ja
$currentOp Nej
$facet Ja
$geoNear Ja
$graphLookup Ja
$group Ja
$indexStats Nej
$limit Ja
$listLocalSessions Nej
$listSessions Nej
$lookup Delvis
$match Ja
$out Ja
$project Ja
$redact Ja
$replaceRoot Ja
$replaceWith Nej
$sample Ja
$skip Ja
$sort Ja
$sortByCount Ja
$unwind Ja

Anteckning

$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 let pipeline .

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