GÄLLER FÖR:
MongoDB
Azure Cosmos DB är Microsofts globalt distribuerade flermodellsdatabastjänst. Du kan kommunicera med Azure Cosmos DB for 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, automatisk horisontell partitionering, garantier för tillgänglighet och svarstid, kryptering i vila, säkerhetskopior och mycket mer.
Kommentar
Version 3.6 av Azure Cosmos DB for MongoDB har inga aktuella planer för livslängd (EOL). Det minsta varsel för en framtida EOL är tre år.
Protokollstöd
Azure Cosmos DB for MongoDB är kompatibel 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 ger omfattande stöd för MongoDB-frågespråkskonstruktioner. I följande avsnitt visas en detaljerad lista över serveråtgärder, operatorer, steg, kommandon och alternativ som för närvarande stöds av Azure Cosmos DB.
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.
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 |
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
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 |
Ja |
group |
Ja |
indexStats |
No |
limit |
Ja |
listLocalSessions |
Nej |
listSessions |
Nej |
lookup |
Delvis |
match |
Ja |
out |
Ja |
project |
Ja |
redact |
Ja |
replaceRoot |
Ja |
replaceWith |
No |
sample |
Ja |
skip |
Ja |
sort |
Ja |
sortByCount |
Ja |
unwind |
Ja |
Kommentar
$lookup
stöder ännu inte den okorrigeringsfunktion för 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 $lookup
med let
och pipeline
fält.
Booleska uttryck
Command |
Stöds |
and |
Ja |
not |
Ja |
or |
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 med 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 |
sqrt |
Ja |
subtract |
Ja |
trunc |
Ja |
Stränguttryck
Command |
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ökningsoperator
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 |
$$CURRENT |
Ja |
$$DESCEND |
Ja |
$$KEEP |
Ja |
$$PRUNE |
Ja |
$$REMOVE |
Ja |
$$ROOT |
Ja |
Literaloperator
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
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
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
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 |
Nej |
Case Insensitive |
Nej |
Sparse |
Nej |
Background |
Ja |
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 de $regex frågorna tillåter vänsteranknerade 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 tanke på 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 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
Command |
Stöds |
all |
Ja |
elemMatch |
Ja |
size |
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, 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äggas till retryWrites=false
i sina anslutningssträng.
Horisontell partitionering
Azure Cosmos DB stöder automatisk, horisontell partitionering på serversidan. Den hanterar skapande, placering och balansering av fragment automatiskt. Azure Cosmos DB stöder inte manuella partitioneringskommandon, 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 en TTL (time-to-live) baserat på tidsstämpeln för dokumentet. 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 du använder stark konsekvens. 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