Azure Cosmos DB para MongoDB (versão 3.6): funcionalidades e sintaxe suportadas
Artigo
APLICA-SE A: MongoDB
O Azure Cosmos DB é um serviço de bases de dados com vários modelos e distribuído globalmente da Microsoft. Pode comunicar com o Azure Cosmos DB para MongoDB com qualquer um dos controladores de cliente do MongoDB open source. O Azure Cosmos DB para MongoDB permite a utilização de controladores de cliente existentes ao aderir ao protocolo de transmissão do MongoDB.
Ao utilizar o Azure Cosmos DB para MongoDB, pode usufruir das vantagens do MongoDB a que está habituado, com todas as capacidades empresariais que o Azure Cosmos DB fornece: distribuição global, fragmentação automática, garantias de disponibilidade e latência, encriptação inativa, cópias de segurança e muito mais.
Nota
A versão 3.6 do Azure Cosmos DB para MongoDB não tem planos atuais para o fim de vida (EOL). O aviso mínimo para um futuro EOL é de três anos.
Suporte de Protocolo
Por predefinição, o Azure Cosmos DB para MongoDB é compatível com a versão 3.6 do servidor do MongoDB para novas contas. Os operadores suportados e quaisquer limitações ou exceções são listadas abaixo. Qualquer controlador cliente que compreenda estes protocolos deve conseguir ligar-se ao Azure Cosmos DB para MongoDB. Quando cria a API do Azure Cosmos DB para contas mongoDB, a versão 3.6 da conta tem o ponto final no formato *.mongo.cosmos.azure.com , enquanto a versão 3.2 da conta tem o ponto final no formato *.documents.azure.com.
Suporte de linguagem de consulta
O Azure Cosmos DB para MongoDB fornece suporte abrangente para construções de linguagem de consulta do MongoDB. As secções seguintes mostram a lista detalhada de operações de servidor, operadores, fases, comandos e opções atualmente suportadas pelo Azure Cosmos DB.
Nota
Este artigo lista apenas os comandos de servidor suportados e exclui as funções de wrapper do lado do cliente. Funções de wrapper do lado do cliente, como deleteMany() e updateMany() utilizam internamente os comandos e update() do delete() servidor. As funções que utilizam comandos de servidor suportados são compatíveis com o Azure Cosmos DB para MongoDB.
Comandos da base de dados
O Azure Cosmos DB para MongoDB suporta os seguintes comandos de base de dados:
$lookup ainda não suporta a funcionalidade de subconsultas não correlacionadas introduzida na versão 3.6 do servidor. Receberá um erro com uma mensagem que let is not supported contém se tentar utilizar o $lookup operador com let e pipeline campos.
Expressões booleanas
Comando
Suportado
and
Yes
not
Yes
or
Yes
Expressões de definição
Comando
Suportado
setEquals
Yes
setIntersection
Yes
setUnion
Yes
setDifference
Yes
setIsSubset
Yes
anyElementTrue
Yes
allElementsTrue
Yes
Expressões de comparação
Nota
A API para MongoDB não suporta expressões de comparação com um literal de matriz na consulta.
Comando
Suportado
cmp
Yes
eq
Yes
gt
Yes
gte
Yes
lt
Yes
lte
Yes
ne
Yes
in
Yes
nin
Yes
Expressões aritméticas
Comando
Suportado
abs
Yes
add
Yes
ceil
Yes
divide
Yes
exp
Yes
floor
Yes
ln
Yes
log
Yes
log10
Yes
mod
Yes
multiply
Yes
pow
Yes
sqrt
Yes
subtract
Yes
trunc
Yes
Expressões de cadeia
Comando
Suportado
concat
Yes
indexOfBytes
Yes
indexOfCP
Yes
split
Yes
strLenBytes
Yes
strLenCP
Yes
strcasecmp
Yes
substr
Yes
substrBytes
Yes
substrCP
Yes
toLower
Yes
toUpper
Yes
Operador de pesquisa de texto
Comando
Suportado
meta
No
Expressões de matriz
Comando
Suportado
arrayElemAt
Yes
arrayToObject
Yes
concatArrays
Yes
filter
Yes
indexOfArray
Yes
isArray
Yes
objectToArray
Yes
range
Yes
reverseArray
Yes
reduce
Yes
size
Yes
slice
Yes
zip
Yes
in
Yes
Operadores variáveis
Comando
Suportado
map
Yes
let
Yes
Variáveis do sistema
Comando
Suportado
$$CURRENT
Yes
$$DESCEND
Yes
$$KEEP
Yes
$$PRUNE
Yes
$$REMOVE
Yes
$$ROOT
Yes
Operador literal
Comando
Suportado
literal
Yes
Expressões de data
Comando
Suportado
dayOfYear
Yes
dayOfMonth
Yes
dayOfWeek
Yes
year
Yes
month
Yes
week
Yes
hour
Yes
minute
Yes
second
Yes
millisecond
Yes
dateToString
Yes
isoDayOfWeek
Yes
isoWeek
Yes
dateFromParts
Yes
dateToParts
Yes
dateFromString
Yes
isoWeekYear
Yes
Expressões condicionais
Comando
Suportado
cond
Yes
ifNull
Yes
switch
Yes
Operador de tipo de dados
Comando
Suportado
type
Yes
Expressões acumuladoras
Comando
Suportado
sum
Yes
avg
Yes
first
Yes
last
Yes
max
Yes
min
Yes
push
Yes
addToSet
Yes
stdDevPop
Yes
stdDevSamp
Yes
Operador intercalar
Comando
Suportado
mergeObjects
Yes
Tipos de dados
Comando
Suportado
Double
Yes
String
Yes
Object
Yes
Array
Yes
Binary Data
Yes
ObjectId
Yes
Boolean
Yes
Date
Yes
Null
Yes
32-bit Integer (int)
Yes
Timestamp
Yes
64-bit Integer (long)
Yes
MinKey
Yes
MaxKey
Yes
Decimal128
Yes
Regular Expression
Yes
JavaScript
Yes
JavaScript (with scope)
Yes
Undefined
Yes
Índices e propriedades de índice
Índices
Comando
Suportado
Single Field Index
Yes
Compound Index
Yes
Multikey Index
Yes
Text Index
No
2dsphere
Yes
2d Index
No
Hashed Index
No
Propriedades do índice
Comando
Suportado
TTL
Yes
Unique
Yes
Partial
No
Case Insensitive
No
Sparse
No
Background
Yes
Operadores
Operadores lógicos
Comando
Suportado
or
Yes
and
Yes
not
Yes
nor
Yes
Operadores de elementos
Comando
Suportado
exists
Yes
type
Yes
Operadores de consulta de avaliação
Comando
Suportado
expr
Yes
jsonSchema
No
mod
Yes
regex
Yes
text
Não (Não suportado. Em vez disso, utilize $regex.)
where
No
Nas consultas $regex, as expressões ancoradas à esquerda permitem a pesquisa de índices. No entanto, utilizar o modificador "i" (não sensível a maiúsculas e minúsculas) e o modificador "m" (multinha) faz a análise de coleção em todas as expressões.
Quando é necessário incluir $ ou |, é melhor criar duas (ou mais) consultas regex. Por exemplo, dada a seguinte consulta original: find({x:{$regex: /^abc$/}), tem de ser modificada da seguinte forma:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
A primeira parte irá utilizar o índice para restringir a pesquisa aos documentos que começam por ^abc e a segunda parte vai fazer a correspondência com as entradas exatas. O operador | de barra age como uma função "ou" – a consulta find({x:{$regex: /^abc |^def/}) corresponde aos documentos em que o campo x tem valores que começam com "abc" ou "def". Para utilizar o índice, é recomendado dividir a consulta em duas consultas diferentes associadas pelo operador $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).
Operadores de matriz
Comando
Suportado
all
Yes
elemMatch
Yes
size
Yes
Operador de comentários
Comando
Suportado
comment
Yes
Operadores de projeção
Comando
Suportado
elemMatch
Yes
meta
No
slice
Yes
Operadores de atualização
Operadores de atualização de campo
Comando
Suportado
inc
Yes
mul
Yes
rename
Yes
setOnInsert
Yes
set
Yes
unset
Yes
min
Yes
max
Yes
currentDate
Yes
Operadores de atualização de matriz
Comando
Suportado
$
Yes
$[]
Yes
$[\<identifier\>]
Yes
addToSet
Yes
pop
Yes
pullAll
Yes
pull
Yes
push
Yes
pushAll
Yes
Modificadores de atualização
Comando
Suportado
each
Yes
slice
Yes
sort
Yes
position
Yes
Operador de atualização bit a bit
Comando
Suportado
bit
Yes
bitsAllSet
No
bitsAnySet
No
bitsAllClear
No
bitsAnyClear
No
Operadores geoespaciais
Operador
Suportado
$geoWithin
Yes
$geoIntersects
Yes
$near
Yes
$nearSphere
Yes
$geometry
Yes
$minDistance
Yes
$maxDistance
Yes
$center
No
$centerSphere
No
$box
No
$polygon
No
Operações de ordenação
Quando utiliza a operação, as findOneAndUpdate operações de ordenação num único campo são suportadas, mas as operações de ordenação em vários campos não são suportadas.
Indexação
A API para MongoDB suporta vários índices para permitir a ordenação em vários campos, melhorar o desempenho das consultas e impor a exclusividade.
GridFS
O Azure Cosmos DB suporta GridFS através de qualquer controlador MongoDB compatível com GridFS.
Replicação
O Azure Cosmos DB suporta a replicação nativa e automática nas camadas inferiores. Esta lógica é expandida para conseguir também a replicação global de latência baixa. O Azure Cosmos DB não suporta comandos de replicação manual.
Repetição de Escritas
O Azure Cosmos DB ainda não suporta escritas retráveis. Os controladores de cliente têm de adicionar retryWrites=false à respetiva cadeia de ligação.
Fragmentação
O Azure Cosmos DB suporta a fragmentação automática do lado do servidor. Gere a criação, colocação e balanceamento de partições horizontais automaticamente. O Azure Cosmos DB não suporta comandos de fragmentação manual, o que significa que não tem de invocar comandos como addShard, balancerStart, moveChunk, etc. Só precisa de especificar a chave de partição horizontal ao criar os contentores ou consultar os dados.
Sessões
O Azure Cosmos DB ainda não suporta comandos de sessões do lado do servidor.
TTL
O Azure Cosmos DB suporta um TTL (time-to-live) com base no carimbo de data/hora do documento. O TTL pode ser ativado para coleções a partir do portal do Azure.
Gestão de funções e utilizadores
O Azure Cosmos DB ainda não suporta utilizadores e funções. No entanto, suporta o controlo de acesso baseado em funções do Azure (RBAC do Azure) e palavras-passe ou chaves só de leitura e leitura que podem ser obtidas através do painel de cadeia de ligação no portal do Azure.
Preocupação Escrita
Algumas aplicações dependem de uma Preocupação de Escrita, que especifica o número de respostas necessárias durante uma operação de escrita. Devido à forma como o Azure Cosmos DB lida com a replicação, todas as escritas são automaticamente quórum maioritário por predefinição ao utilizar consistência forte. Qualquer preocupação de escrita especificada pelo código de cliente é ignorada. Para saber mais, consulte o artigo Utilizar níveis de consistência para maximizar a disponibilidade e o desempenho .