Azure Cosmos DB for MongoDB (version 3.6): Funktioner och syntax som stöds

GÄLLER FÖR: Mongodb

Azure Cosmos DB är Microsofts globalt distribuerade databastjänst för flera datamodeller. Du kan kommunicera med Azure Cosmos DB för 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, garantier för automatisk horisontell partitionering, tillgänglighet och svarstid, kryptering i vila, säkerhetskopior och mycket mer.

Anteckning

Version 3.6 av Azure Cosmos DB for MongoDB har inga aktuella planer för slutet av livscykeln (EOL). Minsta varsel för en framtida EOL är tre år.

Protokollstöd

Azure Cosmos DB for MongoDB är kompatibelt med MongoDB-serverversion 3.6 som standard för nya konton. 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 API för MongoDB-konton har 3.6-versionen av kontot slutpunkten i formatet *.mongo.cosmos.azure.com medan 3.2-versionen av kontot har slutpunkten i formatet *.documents.azure.com.

Stöd för frågespråk

Azure Cosmos DB for MongoDB har omfattande stöd för mongoDB-frågespråkskonstruktioner. I följande avsnitt visas en detaljerad lista över serveråtgärder, operatorer, faser, kommandon och alternativ som för närvarande stöds av Azure Cosmos DB.

Anteckning

Den här artikeln innehåller endast serverkommandon som stöds och exkluderar omslutningsfunktioner på klientsidan. Omslutningsfunktioner på klientsidan, till exempel deleteMany() och internt, använder delete() - och updateMany()update() -serverkommandona. Funktioner som använder serverkommandon som stöds är kompatibla med Azure Cosmos DB för MongoDB.

Databaskommandon

Azure Cosmos DB for MongoDB stöder följande databaskommandon:

Fråga och skriv-åtgärdskommandon

Kommando Stöds
change streams Ja
delete Ja
eval Inga
find Ja
findAndModify Ja
getLastError Ja
getMore Ja
getPrevError Inga
insert Ja
parallelCollectionScan Inga
resetError Inga
update Ja

Autentiseringskommandon

Kommando Stöds
authenticate Ja
getnonce Ja
logout Ja

Administrationskommandon

Kommando Stöds
cloneCollectionAsCapped Inga
collMod Inga
connectionStatus Inga
convertToCapped Inga
copydb Inga
create Ja
createIndexes Ja
currentOp Ja
drop Ja
dropDatabase Ja
dropIndexes Ja
filemd5 Ja
killCursors Ja
killOp Inga
listCollections Ja
listDatabases Ja
listIndexes Ja
reIndex Ja
renameCollection Inga

Diagnostiska kommandon

Kommando Stöds
buildInfo Ja
collStats Ja
connPoolStats Inga
connectionStatus Inga
dataSize Inga
dbHash Inga
dbStats Ja
explain Ja
features Inga
hostInfo Ja
listDatabases Ja
listCommands Inga
profiler Inga
serverStatus Inga
top Inga
whatsmyuri Ja

Sammansättningspipeline

Sammansättningskommandon

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

Sammansättningsfaser

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

Anteckning

$lookup har ännu inte stöd för funktionen för okorrelerade 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 med let fälten $lookup och pipeline .

Booleska uttryck

Kommando Stöds
and Ja
not Ja
or 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 matrisliteral 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
split Ja
strLenBytes Ja
strLenCP Ja
strcasecmp Ja
substr Ja
substrBytes Ja
substrCP Ja
toLower Ja
toUpper Ja

Textsökoperator

Kommando Stöds
meta Inga

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

Datatypsoperator

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

Kopplingsoperator

Kommando Stöds
mergeObjects Ja

Datatyper

Kommando 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

Kommando Stöds
Single Field Index Ja
Compound Index Ja
Multikey Index Ja
Text Index Inga
2dsphere Ja
2d Index Inga
Hashed Index Inga

Indexegenskaper

Kommando Stöds
TTL Ja
Unique Ja
Partial Inga
Case Insensitive Inga
Sparse Inga
Background 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 Ja
jsonSchema Inga
mod Ja
regex Ja
text Nej (stöds inte. Använd $regex i stället.)
where Inga

I $regex frågor tillåter vänsterankarlade 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 flera) regex-frågor. Med 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. 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 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 Inga
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

Uppdatera modifierare

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

Binär uppdateringsoperator

Kommando Stöds
bit Ja
bitsAllSet Inga
bitsAnySet Inga
bitsAllClear Inga
bitsAnyClear Inga

Geospatiala operatorer

Operator Stöds
$geoWithin Ja
$geoIntersects Ja
$near Ja
$nearSphere Ja
$geometry Ja
$minDistance Ja
$maxDistance Ja
$center Inga
$centerSphere Inga
$box Inga
$polygon Inga

Sorteringsåtgärder

När du använder findOneAndUpdate åtgärden stöds sorteringsåtgärder i ett enda fält, men 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.

GridFS

Azure Cosmos DB stöder GridFS via valfri GridFS-kompatibel MongoDB-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

Azure Cosmos DB har ännu inte stöd för återförsöksbara skrivningar. Klientdrivrutiner måste lägga till retryWrites=false i anslutningssträngen.

Horisontell partitionering

Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar automatiskt skapande, placering och utjämning av fragment. 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 har ännu inte stöd för sessionskommandon på serversidan.

TTL-värde (time to live)

Azure Cosmos DB stöder TTL (Time To Live) baserat på dokumentets tidsstämpel. TTL kan aktiveras för samlingar från Azure Portal.

Användar- och rollhantering

Azure Cosmos DB har ännu inte stöd för användare och roller. Den stöder dock rollbaserad åtkomstkontroll i Azure (Azure RBAC) och skrivskyddade och skrivskyddade lösenord eller nycklar som kan hämtas via fönstret anslutningssträng i Azure Portal.

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 är alla skrivningar automatiskt majoritetskvorum som standard när stark konsekvens används. Skrivanmärkningar som anges av klientkoden ignoreras. Mer information finns i artikeln Använda konsekvensnivåer för att maximera tillgänglighet och prestanda .

Nästa steg