Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Azure Cosmos DB för MongoDB 4.0 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.0.
Protokollstöd
De operatorer som stöds och eventuella begränsningar eller undantag visas här. 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+ versioner av konton slutpunkten i formatet *.mongo.cosmos.azure.com medan 3.2-versionen av konton har slutpunkten 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. Här 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
| 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
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 |
Ja |
group |
Ja |
indexStats |
✖️ Nej |
limit |
Ja |
listLocalSessions |
✖️ Nej |
listSessions |
✖️ Nej |
lookup |
❓Partiell |
match |
Ja |
out |
Ja |
project |
Ja |
redact |
Ja |
replaceRoot |
Ja |
replaceWith |
✖️ Nej |
sample |
Ja |
skip |
Ja |
sort |
Ja |
sortByCount |
Ja |
unwind |
Ja |
Kommentar
$lookup har ännu inte stöd för funktionen för okorrigering av 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
| 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 med 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 |
sqrt |
Ja |
subtract |
Ja |
trunc |
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 | |
|---|---|
$$CURRENT |
Ja |
$$DESCEND |
Ja |
$$KEEP |
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 kodas i BSON-format (MongoDB binary JSON). 4.0 API-versionen 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 optimering.
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.
Du kan aktivera 16 MB på fliken Funktioner i Azure-portalen eller programmatiskt genom att lägga till EnableMongo16MBDocumentSupport funktionen.
Vi rekommenderar att du aktiverar återförsök på serversidan och undviker jokerteckenindex för att säkerställa att begäranden med större dokument lyckas. Om det behövs kan det också hjälpa prestanda att höja databasen eller insamlingsbegärandeenheterna.
| 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
| 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 |
✖️ Nej |
Case Insensitive |
✖️ Nej |
Sparse |
✖️ Nej |
Background |
Ja |
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 de $regex frågorna tillåter vänsteranknerade uttryck indexsökning. Om du använder i modifierare (skiftlägesokänslighet) och m modifierare (flera ledningar) orsakas dock insamlingsgenomsökningen 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 de 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 delar du upp frågan i två olika frågor som är kopplade till $or-operatorn: find( {$or : [{x: $regex: /^abc/}, {$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 findOneAndUpdate åtgärden med API för MongoDB version 4.0 stöds sorteringsåtgärder i ett enda fält och flera fält. Sorteringsåtgärder på flera fält var en begränsning för tidigare trådprotokoll.
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 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. Azure Cosmos DB stöder inte manuella replikeringskommandon.
Återförsöksbara skrivningar
Återförsöksbara skrivningar gör det möjligt för MongoDB-drivrutiner att automatiskt försöka utföra vissa skrivåtgärder igen om det uppstod ett fel, men 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 meddelandetSuccess -
db.coll.deleteMany({"city": "NYC"})– Misslyckas med felShardKeyNotFound(61)
Kommentar
Återförsöksbara skrivningar stöder inte mass osorterade 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 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, 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.
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.
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.
Användar- och rollhantering
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/nycklar som kan hämtas via Azure-portalen (sidan Anslutningssträng).
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 i bakgrunden är alla skrivningar automatiskt kvorum 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.