Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Cosmos DB per MongoDB 4.0 consente di usare funzionalità di MongoDB familiari con funzionalità di livello aziendale, ad esempio distribuzione globale, partizionamento orizzontale automatico e disponibilità elevata. Questo articolo descrive le funzionalità, la sintassi e i vantaggi supportati dell'uso di Azure Cosmos DB per MongoDB 4.0.
Protocolli supportati
Gli operatori supportati e le eventuali limitazioni o eccezioni sono elencati qui. I driver client che identificano questi protocolli dovrebbero essere in grado di collegarsi ad Azure Cosmos DB for MongoDB. Quando si usa Azure Cosmos DB per gli account MongoDB, per la versione 3.6+ degli account il formato dell'endpoint è *.mongo.cosmos.azure.com mentre per la versione 3.2 degli account il formato dell'endpoint è *.documents.azure.com.
Nota
Questo articolo elenca solo i comandi server supportati e non le funzioni wrapper lato client. Le funzioni wrapper lato client come deleteMany() e updateMany() utilizzano internamente i comandi server delete() e update(). Le funzioni che utilizzano i comandi server supportati sono compatibili con Azure Cosmos DB for MongoDB.
Linguaggi di query supportati
Azure Cosmos DB for MongoDB offre il supporto completo dei costrutti del linguaggio di query MongoDB. Qui è possibile trovare l'elenco dettagliato delle operazioni, degli operatori, delle fasi, dei comandi e delle opzioni attualmente supportate.
Comandi del database
Azure Cosmos DB for MongoDB supporta i comandi di database seguenti:
Comandi per le operazioni di query e scrittura
| Supportata | |
|---|---|
change streams |
Sì |
delete |
Sì |
eval |
✖️ No |
find |
Sì |
findAndModify |
Sì |
getLastError |
Sì |
getMore |
Sì |
getPrevError |
✖️ No |
insert |
Sì |
parallelCollectionScan |
✖️ No |
resetError |
✖️ No |
update |
Sì |
Comandi delle transazioni
| Supportata | |
|---|---|
abortTransaction |
Sì |
commitTransaction |
Sì |
Comandi di autenticazione
| Supportata | |
|---|---|
authenticate |
Sì |
getnonce |
Sì |
logout |
Sì |
Comandi di amministrazione
| Supportata | |
|---|---|
cloneCollectionAsCapped |
✖️ No |
collMod |
✖️ No |
connectionStatus |
✖️ No |
convertToCapped |
✖️ No |
copydb |
✖️ No |
create |
Sì |
createIndexes |
Sì |
currentOp |
Sì |
drop |
Sì |
dropDatabase |
Sì |
dropIndexes |
Sì |
filemd5 |
Sì |
killCursors |
Sì |
killOp |
✖️ No |
listCollections |
Sì |
listDatabases |
Sì |
listIndexes |
Sì |
reIndex |
Sì |
renameCollection |
✖️ No |
Comandi di diagnostica
| Supportata | |
|---|---|
buildInfo |
Sì |
collStats |
Sì |
connPoolStats |
✖️ No |
connectionStatus |
✖️ No |
dataSize |
✖️ No |
dbHash |
✖️ No |
dbStats |
Sì |
explain |
Sì |
features |
✖️ No |
hello |
Sì |
hostInfo |
Sì |
listDatabases |
Sì |
listCommands |
✖️ No |
profiler |
✖️ No |
serverStatus |
✖️ No |
top |
✖️ No |
whatsmyuri |
Sì |
Pipeline di aggregazione
Comandi di aggregazione
| Supportata | |
|---|---|
aggregate |
Sì |
count |
Sì |
distinct |
Sì |
mapReduce |
✖️ No |
Fasi di aggregazione
| Supportata | |
|---|---|
addFields |
Sì |
bucket |
✖️ No |
bucketAuto |
✖️ No |
changeStream |
Sì |
collStats |
✖️ No |
count |
Sì |
currentOp |
✖️ No |
facet |
Sì |
geoNear |
Sì |
graphLookup |
Sì |
group |
Sì |
indexStats |
✖️ No |
limit |
Sì |
listLocalSessions |
✖️ No |
listSessions |
✖️ No |
lookup |
❓Parziale |
match |
Sì |
out |
Sì |
project |
Sì |
redact |
Sì |
replaceRoot |
Sì |
replaceWith |
✖️ No |
sample |
Sì |
skip |
Sì |
sort |
Sì |
sortByCount |
Sì |
unwind |
Sì |
Nota
$lookup non supporta ancora la funzionalità di sottoquery non correlata introdotta nella versione 3.6 del server. Viene visualizzato un errore con un messaggio contenente let is not supported se si tenta di usare l'operatore $lookup con let i campi e pipeline .
Espressioni booleane
| Supportata | |
|---|---|
and |
Sì |
not |
Sì |
or |
Sì |
Espressioni di conversione
| Supportata | |
|---|---|
convert |
Sì |
toBool |
Sì |
toDate |
Sì |
toDecimal |
Sì |
toDouble |
Sì |
toInt |
Sì |
toLong |
Sì |
toObjectId |
Sì |
toString |
Sì |
Espressioni Set
| Supportata | |
|---|---|
setEquals |
Sì |
setIntersection |
Sì |
setUnion |
Sì |
setDifference |
Sì |
setIsSubset |
Sì |
anyElementTrue |
Sì |
allElementsTrue |
Sì |
Espressioni di confronto
Nota
L'API per MongoDB non supporta le espressioni di confronto con un valore letterale di matrice nella query.
| Supportata | |
|---|---|
cmp |
Sì |
eq |
Sì |
gt |
Sì |
gte |
Sì |
lt |
Sì |
lte |
Sì |
ne |
Sì |
in |
Sì |
nin |
Sì |
Espressioni aritmetiche
| Supportata | |
|---|---|
abs |
Sì |
add |
Sì |
ceil |
Sì |
divide |
Sì |
exp |
Sì |
floor |
Sì |
ln |
Sì |
log |
Sì |
log10 |
Sì |
mod |
Sì |
multiply |
Sì |
pow |
Sì |
sqrt |
Sì |
subtract |
Sì |
trunc |
Sì |
Espressioni stringa
| Supportata | |
|---|---|
concat |
Sì |
indexOfBytes |
Sì |
indexOfCP |
Sì |
ltrim |
Sì |
rtrim |
Sì |
trim |
Sì |
split |
Sì |
strLenBytes |
Sì |
strLenCP |
Sì |
strcasecmp |
Sì |
substr |
Sì |
substrBytes |
Sì |
substrCP |
Sì |
toLower |
Sì |
toUpper |
Sì |
Operatore di ricerca testo
| Supportata | |
|---|---|
meta |
✖️ No |
Espressioni di matrice
| Supportata | |
|---|---|
arrayElemAt |
Sì |
arrayToObject |
Sì |
concatArrays |
Sì |
filter |
Sì |
indexOfArray |
Sì |
isArray |
Sì |
objectToArray |
Sì |
range |
Sì |
reverseArray |
Sì |
reduce |
Sì |
size |
Sì |
slice |
Sì |
zip |
Sì |
in |
Sì |
Operatori variabili
| Supportata | |
|---|---|
map |
Sì |
let |
Sì |
Variabili di sistema
| Supportata | |
|---|---|
$$CURRENT |
Sì |
$$DESCEND |
Sì |
$$KEEP |
Sì |
$$PRUNE |
Sì |
$$REMOVE |
Sì |
$$ROOT |
Sì |
Operatore letterale
| Supportata | |
|---|---|
literal |
Sì |
Espressioni di data
| Supportata | |
|---|---|
dayOfYear |
Sì |
dayOfMonth |
Sì |
dayOfWeek |
Sì |
year |
Sì |
month |
Sì |
week |
Sì |
hour |
Sì |
minute |
Sì |
second |
Sì |
millisecond |
Sì |
dateToString |
Sì |
isoDayOfWeek |
Sì |
isoWeek |
Sì |
dateFromParts |
Sì |
dateToParts |
Sì |
dateFromString |
Sì |
isoWeekYear |
Sì |
Espressioni condizionali
| Supportata | |
|---|---|
cond |
Sì |
ifNull |
Sì |
switch |
Sì |
Operatore tipo di dati
| Supportata | |
|---|---|
type |
Sì |
Espressioni accumulatore
| Supportata | |
|---|---|
sum |
Sì |
avg |
Sì |
first |
Sì |
last |
Sì |
max |
Sì |
min |
Sì |
push |
Sì |
addToSet |
Sì |
stdDevPop |
Sì |
stdDevSamp |
Sì |
Operatore merge
| Supportata | |
|---|---|
mergeObjects |
Sì |
Tipo di dati
Azure Cosmos DB per MongoDB supporta documenti codificati in formato JSON binario MongoDB (BSON). La versione dell'API 4.0 migliora l'utilizzo interno di questo formato per migliorare le prestazioni e ridurre i costi. I documenti scritti o aggiornati tramite un endpoint che esegue 4.0+ traggono vantaggio dall’ottimizzazione.
In uno scenario di aggiornamento alla versione 4.0 o successiva, i documenti creati prima dell'aggiornamento non traggono immediatamente vantaggio dalle prestazioni migliorate. Per sfruttare i vantaggi dei miglioramenti, aggiornare questi documenti tramite un'operazione di scrittura usando l'endpoint 4.0.
Il supporto per i documenti da 16 MB aumenta il limite di dimensioni per i documenti da 2 MB a 16 MB. Questo limite si applica solo alle raccolte create dopo l'abilitazione della funzionalità. Dopo aver abilitato questa funzionalità per un account di database, non può essere disabilitata.
L'abilitazione di 16 MB può essere eseguita nella scheda funzionalità del portale di Azure o a livello di codice aggiungendo la EnableMongo16MBDocumentSupport funzionalità .
È consigliabile abilitare la ripetizione lato server ed evitare l'uso di indici con caratteri jolly per garantire che le richieste nei documenti più grandi abbiano esito positivo. Se necessario, anche la generazione di unità richiesta di database o raccolta può contribuire a migliorare le prestazioni.
| Supportata | |
|---|---|
Double |
Sì |
String |
Sì |
Object |
Sì |
Array |
Sì |
Binary Data |
Sì |
ObjectId |
Sì |
Boolean |
Sì |
Date |
Sì |
Null |
Sì |
32-bit Integer (int) |
Sì |
Timestamp |
Sì |
64-bit Integer (long) |
Sì |
MinKey |
Sì |
MaxKey |
Sì |
Decimal128 |
Sì |
Regular Expression |
Sì |
JavaScript |
Sì |
JavaScript (with scope) |
Sì |
Undefined |
Sì |
Indici e proprietà degli indici
Indici
| Supportata | |
|---|---|
Single Field Index |
Sì |
Compound Index |
Sì |
Multikey Index |
Sì |
Text Index |
✖️ No |
2dsphere |
Sì |
2d Index |
✖️ No |
Hashed Index |
✖️ No |
Proprietà degli indici
| Supportata | |
|---|---|
TTL |
Sì |
Unique |
Sì |
Partial |
✖️ No |
Case Insensitive |
✖️ No |
Sparse |
✖️ No |
Background |
Sì |
Operatori
Operatori logici
| Supportata | |
|---|---|
or |
Sì |
and |
Sì |
not |
Sì |
nor |
Sì |
Operatori elemento
| Supportata | |
|---|---|
exists |
Sì |
type |
Sì |
Operatori di query di valutazione
| Supportata | |
|---|---|
expr |
Sì |
jsonSchema |
✖️ No |
mod |
Sì |
regex |
Sì |
text |
✖️ No |
where |
✖️ No |
Nelle query $regex, le espressioni ancorate a sinistra consentono la ricerca nell'indice. Tuttavia, l'uso i del modificatore (senza distinzione tra maiuscole e minuscole) e m del modificatore (multilinea) causa l'analisi della raccolta in tutte le espressioni.
Quando è necessario includere $ o |, è consigliabile creare due o più query regex. La query originale find({x:{$regex: /^abc$/}) deve essere ad esempio modificata come segue:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
La prima parte usa l'indice per limitare la ricerca a tali documenti che iniziano con ^abc e la seconda parte corrisponde alle voci esatte. L'operatore | bar funge da funzione "o" : la query find({x:{$regex: /^abc |^def/}) corrisponde ai documenti in cui il campo x ha valori che iniziano con "abc" o "def". Per utilizzare l'indice, suddividere la query in due query diverse unite dall'operatore $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Suggerimento
Il text comando non è supportato. Utilizzare invece $regex.
Operatori matrice
| Supportata | |
|---|---|
all |
Sì |
elemMatch |
Sì |
size |
Sì |
Operatore commento
| Supportata | |
|---|---|
comment |
Sì |
Operatori proiezione
| Supportata | |
|---|---|
elemMatch |
Sì |
meta |
✖️ No |
slice |
Sì |
Operatori di aggiornamento
Operatori di aggiornamento di campo
| Supportata | |
|---|---|
inc |
Sì |
mul |
Sì |
rename |
Sì |
setOnInsert |
Sì |
set |
Sì |
unset |
Sì |
min |
Sì |
max |
Sì |
currentDate |
Sì |
Operatori di aggiornamento di matrice
| Supportata | |
|---|---|
$ |
Sì |
$[] |
Sì |
$[\<identifier\>] |
Sì |
addToSet |
Sì |
pop |
Sì |
pullAll |
Sì |
pull |
Sì |
push |
Sì |
pushAll |
Sì |
Modificatori aggiornamento
| Supportata | |
|---|---|
each |
Sì |
slice |
Sì |
sort |
Sì |
position |
Sì |
Operatore di aggiornamento bit per bit
| Supportata | |
|---|---|
bit |
Sì |
bitsAllSet |
✖️ No |
bitsAnySet |
✖️ No |
bitsAllClear |
✖️ No |
bitsAnyClear |
✖️ No |
Operatori geospaziali
| Supportata | |
|---|---|
$geoWithin |
Sì |
$geoIntersects |
Sì |
$near |
Sì |
$nearSphere |
Sì |
$geometry |
Sì |
$minDistance |
Sì |
$maxDistance |
Sì |
$center |
✖️ No |
$centerSphere |
✖️ No |
$box |
✖️ No |
$polygon |
✖️ No |
Operazioni di ordinamento
Quando si usa l'operazione findOneAndUpdate con l’API per MongoDB versione 4.0, sono supportate le operazioni di ordinamento in un singolo campo, ma non quelle su più campi. Le operazioni di ordinamento su più campi erano una limitazione dei protocolli di collegamento precedenti.
Indicizzazione
L'API per MongoDB supporta vari indici per abilitare l'ordinamento in più campi, migliorare le prestazioni delle query e applicare l'univocità.
GridFS
Azure Cosmos DB supporta GridFS tramite qualsiasi driver Mongo compatibile con GridFS.
Replica
Azure Cosmos DB supporta la replica automatica e nativa ai livelli più bassi. Questa logica viene estesa per ottenere anche una replica globale a bassa latenza. Azure Cosmos DB non supporta comandi di replica manuali.
Scritture ripetibili
Le scritture ripetibili consentono ai driver MongoDB di ripetere automaticamente determinate operazioni di scrittura in caso di errore, ma comportano requisiti più rigorosi per determinate operazioni, che corrispondono ai requisiti del protocollo MongoDB. Con questa funzionalità abilitata, le operazioni di aggiornamento, incluse le eliminazioni, nelle raccolte partizionate richiedono che la chiave di partizione sia inclusa nell'istruzione di filtro di query o aggiornamento.
Ad esempio, con una raccolta partizionata, partizionata nella chiave region: per eliminare tutti i documenti con il campo city = "NYC", l'applicazione deve eseguire l'operazione per tutti i valori di chiave di partizione (area) se sono abilitate operazioni di scrittura ritentabili.
-
db.coll.deleteMany({"region": "USA", "city": "NYC"})- Ha esito positivo con il messaggioSuccess -
db.coll.deleteMany({"city": "NYC"})- Ha esito negativo con erroreShardKeyNotFound(61)
Nota
Le scritture riprovabili non supportano le scritture bulk non ordinate in questo momento. Se si desidera eseguire operazioni di scrittura in blocco con le scritture ripetibili abilitate, eseguire scritture ordinate in blocco.
Per abilitare la funzionalità, aggiungere la funzionalità EnableMongoRetryableWrites all'account di database. Questa funzionalità può essere abilitata anche nella scheda Funzionalità del portale di Azure.
Partizionamento orizzontale
Azure Cosmos DB supporta il partizionamento orizzontale automatico lato server. Gestisce automaticamente la creazione, la selezione e il bilanciamento delle partizioni. Azure Cosmos DB non supporta i comandi di partizionamento orizzontale manuali, il che significa che non è necessario richiamare comandi come addShard, balancerStarte moveChunk. È sufficiente specificare la chiave di partizione durante la creazione dei contenitori o l'esecuzione di query sui dati.
Sessioni
Azure Cosmos DB non supporta ancora i comandi delle sessioni sul lato server.
Durata (TTL)
Azure Cosmos DB supporta una durata (TTL) in base al timestamp del documento. La durata (TTL) può essere abilitata per le raccolte dal portale di Azure.
Transazioni
Le transazioni con più documenti sono supportate all'interno di una raccolta senza partizionamento. Le transazioni multidocumento non sono supportate tra raccolte o nelle raccolte con partizionamento. Il timeout per le transazioni è fisso, pari a 5 secondi.
Gestione utenti e ruoli
Azure Cosmos DB non supporta ancora utenti e ruoli. Tuttavia, Azure Cosmos DB supporta il controllo degli accessi in base al ruolo di Azure e le password/chiavi di lettura e di sola lettura che possono essere ottenute tramite il portale di Azure (pagina Stringa di connessione).
Write concern
Alcune applicazioni usano un write concern che definisce il numero di risposte necessarie durante un'operazione di scrittura. A causa della modalità in cui Azure Cosmos DB gestisce la replica in background, per impostazione predefinita le operazioni di scrittura sono automaticamente Quorum. Qualsiasi write concern specificato dal codice client viene ignorato. Per altre informazioni, vedere Uso dei livelli di coerenza per ottimizzare la disponibilità e le prestazioni.