Azure Cosmos DB for MongoDB (versione server 4.0): funzionalità e sintassi supportate
Articolo
SI APPLICA A: MongoDB
Azure Cosmos DB è il servizio di database multi-modello distribuito globalmente di Microsoft. È possibile comunicare con Azure Cosmos DB for MongoDB usando uno dei driver client MongoDB open source. Azure Cosmos DB for MongoDB consente di usare driver client esistenti aderendo al protocollo di collegamento MongoDB.
Usando Azure Cosmos DB for MongoDB è possibile sfruttare i noti vantaggi di MongoDB con tutte le funzionalità aziendali offerte da Azure Cosmos DB: distribuzione globale, partizionamento orizzontale automatico, garanzie di disponibilità e latenza, crittografia di dati inattivi, backup e molto altro.
Protocolli supportati
Gli operatori supportati con i relativi limiti ed eccezioni sono elencati di seguito. 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. Di seguito è possibile trovare l'elenco dettagliato di operazioni, operatori, fasi, comandi e opzioni attualmente supportati.
Comandi del database
Azure Cosmos DB for MongoDB supporta i comandi di database seguenti:
$lookup non supporta ancora la funzionalità di sottoquery non correlata introdotta nella versione 3.6 del server. Se si tenta di usare l'operatore $lookup con i campi let e pipeline, verrà visualizzato un errore con un messaggio contenente let is not supported.
Espressioni booleane
Comando
Supportata
and
Sì
not
Sì
or
Sì
Espressioni di conversione
Comando
Supportata
convert
Sì
toBool
Sì
toDate
Sì
toDecimal
Sì
toDouble
Sì
toInt
Sì
toLong
Sì
toObjectId
Sì
toString
Sì
Espressioni Set
Comando
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.
Comando
Supportata
cmp
Sì
eq
Sì
gt
Sì
gte
Sì
lt
Sì
lte
Sì
ne
Sì
in
Sì
nin
Sì
Espressioni aritmetiche
Comando
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
Comando
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
Comando
Supportata
meta
No
Espressioni di matrice
Comando
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
Comando
Supportata
map
Sì
let
Sì
Variabili di sistema
Comando
Supportata
$$CURRENT
Sì
$$DESCEND
Sì
$$KEEP
Sì
$$PRUNE
Sì
$$REMOVE
Sì
$$ROOT
Sì
Operatore letterale
Comando
Supportata
literal
Sì
Espressioni di data
Comando
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
Comando
Supportata
cond
Sì
ifNull
Sì
switch
Sì
Operatore tipo di dati
Comando
Supportata
type
Sì
Espressioni accumulatore
Comando
Supportata
sum
Sì
avg
Sì
first
Sì
last
Sì
max
Sì
min
Sì
push
Sì
addToSet
Sì
stdDevPop
Sì
stdDevSamp
Sì
Operatore merge
Comando
Supportata
mergeObjects
Sì
Tipo di dati
Azure Cosmos DB for MongoDB supporta documenti codificati in formato BSON MongoDB. 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, i documenti scritti prima dell'aggiornamento alla versione 4.0+ non trarranno vantaggio dalle prestazioni migliorate fino a quando non vengono aggiornati tramite un'operazione di scrittura tramite l'endpoint 4.0+.
Il supporto per documenti da 16 MB aumenta il limite per i documenti da 2 MB a 16 MB. Questo limite è applicabile solo alle raccolte create dopo l'abilitazione di questa funzionalità. Dopo l'abilitazione di questa funzionalità per l'account del database, non sarà possibile disabilitarla.
L'abilitazione del limite di 16 MB può essere eseguita nella scheda delle funzionalità del portale di Azure o a livello di codice, aggiungendo la funzionalità EnableMongo16MBDocumentSupport.
È 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, la generazione di UR di database/raccolta può anche contribuire alle prestazioni.
Comando
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
Comando
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
Comando
Supportata
TTL
Sì
Unique
Sì
Partial
No
Case Insensitive
No
Sparse
No
Background
Sì
Operatori
Operatori logici
Comando
Supportata
or
Sì
and
Sì
not
Sì
nor
Sì
Operatori elemento
Comando
Supportata
exists
Sì
type
Sì
Operatori di query di valutazione
Comando
Supportata
expr
Sì
jsonSchema
No
mod
Sì
regex
Sì
text
No (non è supportato. In alternativa, usare $regex).
where
No
Nelle query $regex, le espressioni ancorate a sinistra consentono la ricerca nell'indice. L'uso del modificatore 'i' (senza distinzione tra maiuscole e minuscole) e 'm' (su più righe) provoca 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 userà l'indice per limitare la ricerca ai documenti che iniziano con ^abc, mentre la seconda parte individuerà le voci esatte. L'operatore barra '|' funge da funzione "or". La query find({x:{$regex: /^abc |^def/}) individua i documenti in cui il campo 'x' ha un valore che inizia con "abc" o "def". Per usare l'indice è consigliabile per suddividere la query in due query diverse unite dall'operatore $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Operatori matrice
Comando
Supportata
all
Sì
elemMatch
Sì
size
Sì
Operatore commento
Comando
Supportata
comment
Sì
Operatori proiezione
Comando
Supportata
elemMatch
Sì
meta
No
slice
Sì
Operatori di aggiornamento
Operatori di aggiornamento di campo
Comando
Supportata
inc
Sì
mul
Sì
rename
Sì
setOnInsert
Sì
set
Sì
unset
Sì
min
Sì
max
Sì
currentDate
Sì
Operatori di aggiornamento di matrice
Comando
Supportata
$
Sì
$[]
Sì
$[\<identifier\>]
Sì
addToSet
Sì
pop
Sì
pullAll
Sì
pull
Sì
push
Sì
pushAll
Sì
Modificatori aggiornamento
Comando
Supportata
each
Sì
slice
Sì
sort
Sì
position
Sì
Operatore di aggiornamento bit per bit
Comando
Supportata
bit
Sì
bitsAllSet
No
bitsAnySet
No
bitsAllClear
No
bitsAnyClear
No
Operatori geospaziali
Operatore
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 richiederanno che la chiave di partizione sia inclusa nell'istruzione del filtro di query o aggiornamento.
Ad esempio, con una raccolta partizionata nella chiave "country": per eliminare tutti i documenti con il campo città = "NYC", l'applicazione dovrà eseguire l'operazione per tutti i valori della chiave di partizione (country) se sono abilitate le scritture ripetibili.
Le scritture ripetibili 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.
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, ovvero non è necessario richiamare comandi come addShard, balancerStart, moveChunk e così via. È 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. Azure Cosmos DB, tuttavia, supporta il Controllo degli accessi in base al ruolo di Azure e chiavi/password di lettura/scrittura e sola lettura ottenibili tramite il portale di Azure nella 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.
Passaggi successivi
Informazioni su come usare Studio 3T con Azure Cosmos DB for MongoDB.
Informazioni su come usare Robo 3T con Azure Cosmos DB for MongoDB.
Esplorare gli esempi di MongoDB con Azure Cosmos DB for MongoDB.
Si sta tentando di pianificare la capacità per una migrazione ad Azure Cosmos DB? È possibile usare le informazioni del cluster di database esistente per la pianificazione della capacità.