Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
APLICA-SE AO: MongoDB
O Azure Cosmos DB é o serviço de banco de dados multimodelo distribuído globalmente da Microsoft. Você pode se comunicar com o Azure Cosmos DB for MongoDB usando um dos drivers cliente do MongoDB de código aberto. O Azure Cosmos DB for MongoDB permite o uso de drivers cliente existentes por adotar ao protocolo de transmissão do MongoDB.
Usando o Azure Cosmos DB for MongoDB, você pode aproveitar os benefícios do MongoDB com os quais está acostumado, com todas as funcionalidades empresariais que o Azure Cosmos DB oferece: distribuição global, fragmentação automática, garantias de disponibilidade e latência, criptografia em dados inativos, backups e muito mais.
Suporte de protocolo
Os operadores com suporte e qualquer limitação ou exceções estão listadas abaixo. Qualquer driver cliente que seja compatível com esses protocolos poderá se conectar ao Azure Cosmos DB for MongoDB. Quando você cria as contas do Azure Cosmos DB for MongoDB, as versões 3.6 e posteriores das contas têm o ponto de extremidade no formato *.mongo.cosmos.azure.com
, enquanto a versão 3.2 das contas tem o ponto de extremidade no formato *.documents.azure.com
.
Observação
Este artigo lista apenas os comandos de servidor com suporte 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 de servidor delete()
e update()
. As funções que utilizam comandos de servidor com suporte são compatíveis com o Azure Cosmos DB for MongoDB.
Suporte de linguagem de consulta
O Azure Cosmos DB for MongoDB oferece um suporte abrangente para constructos de linguagem de consulta do MongoDB. Abaixo, você encontrará uma lista detalhada de operações, operadores, estágios, comandos e opções atualmente compatíveis.
Comandos de banco de dados
O Azure Cosmos DB for MongoDB é compatível com os seguintes comandos de banco de dados:
Comandos de operação de consulta e gravação
Comando | Com suporte |
---|---|
change streams |
Sim |
delete |
Sim |
eval |
Não |
find |
Sim |
findAndModify |
Sim |
getLastError |
Sim |
getMore |
Sim |
getPrevError |
Não |
insert |
Sim |
parallelCollectionScan |
Não |
resetError |
No |
update |
Sim |
Comandos de transação
Comando | Com suporte |
---|---|
abortTransaction |
Sim |
commitTransaction |
Sim |
Comandos de autenticação
Comando | Com suporte |
---|---|
authenticate |
Sim |
getnonce |
Sim |
logout |
Sim |
Comandos de administração
Comando | Com suporte |
---|---|
cloneCollectionAsCapped |
Não |
collMod |
No |
connectionStatus |
No |
convertToCapped |
No |
copydb |
No |
create |
Sim |
createIndexes |
Sim |
currentOp |
Sim |
drop |
Sim |
dropDatabase |
Sim |
dropIndexes |
Sim |
filemd5 |
Sim |
killCursors |
Sim |
killOp |
Não |
listCollections |
Sim |
listDatabases |
Sim |
listIndexes |
Sim |
reIndex |
Sim |
renameCollection |
Não |
Comandos de diagnóstico
Comando | Com suporte |
---|---|
buildInfo |
Sim |
collStats |
Sim |
connPoolStats |
Não |
connectionStatus |
No |
dataSize |
No |
dbHash |
No |
dbStats |
Sim |
explain |
Sim |
features |
Não |
hostInfo |
Sim |
listDatabases |
Sim |
listCommands |
Não |
profiler |
No |
serverStatus |
No |
top |
No |
whatsmyuri |
Sim |
Pipeline de agregação
Comandos de agregação
Comando | Com suporte |
---|---|
aggregate |
Sim |
count |
Sim |
distinct |
Sim |
mapReduce |
Não |
Estágios de agregação
Comando | Com suporte |
---|---|
addFields |
Sim |
bucket |
Não |
bucketAuto |
No |
changeStream |
Sim |
collStats |
Não |
count |
Sim |
currentOp |
Não |
facet |
Sim |
geoNear |
Sim |
graphLookup |
Sim |
group |
Sim |
indexStats |
Não |
limit |
Sim |
listLocalSessions |
Não |
listSessions |
Não |
lookup |
Parcial |
match |
Sim |
out |
Sim |
project |
Sim |
redact |
Sim |
replaceRoot |
Sim |
replaceWith |
Não |
sample |
Sim |
skip |
Sim |
sort |
Sim |
sortByCount |
Sim |
unwind |
Sim |
Observação
O $lookup
ainda não é compatível com um recurso de subconsultas não correlacionadas que foi introduzido na versão 3.6 do servidor. Você receberá uma mensagem de erro contendo let is not supported
, caso tente usar o operador $lookup
com os campos let
e pipeline
.
Expressões boolianas
Comando | Com suporte |
---|---|
and |
Sim |
not |
Sim |
or |
Sim |
Expressões de conversão
Comando | Com suporte |
---|---|
convert |
Sim |
toBool |
Sim |
toDate |
Sim |
toDecimal |
Sim |
toDouble |
Sim |
toInt |
Sim |
toLong |
Sim |
toObjectId |
Sim |
toString |
Sim |
Expressões de definição
Comando | Com suporte |
---|---|
setEquals |
Sim |
setIntersection |
Sim |
setUnion |
Sim |
setDifference |
Sim |
setIsSubset |
Sim |
anyElementTrue |
Sim |
allElementsTrue |
Sim |
Expressões de comparação
Observação
A API para MongoDB não dá suporte a expressões de comparação com um literal de matriz na consulta.
Comando | Com suporte |
---|---|
cmp |
Sim |
eq |
Sim |
gt |
Sim |
gte |
Sim |
lt |
Sim |
lte |
Sim |
ne |
Sim |
in |
Sim |
nin |
Sim |
Expressões aritméticas
Comando | Com suporte |
---|---|
abs |
Sim |
add |
Sim |
ceil |
Sim |
divide |
Sim |
exp |
Sim |
floor |
Sim |
ln |
Sim |
log |
Sim |
log10 |
Sim |
mod |
Sim |
multiply |
Sim |
pow |
Sim |
sqrt |
Sim |
subtract |
Sim |
trunc |
Sim |
Expressões de cadeia de caracteres
Comando | Com suporte |
---|---|
concat |
Sim |
indexOfBytes |
Sim |
indexOfCP |
Sim |
ltrim |
Sim |
rtrim |
Sim |
trim |
Sim |
split |
Sim |
strLenBytes |
Sim |
strLenCP |
Sim |
strcasecmp |
Sim |
substr |
Sim |
substrBytes |
Sim |
substrCP |
Sim |
toLower |
Sim |
toUpper |
Sim |
Operador de pesquisa de texto
Comando | Com suporte |
---|---|
meta |
Não |
Expressões de matriz
Comando | Com suporte |
---|---|
arrayElemAt |
Sim |
arrayToObject |
Sim |
concatArrays |
Sim |
filter |
Sim |
indexOfArray |
Sim |
isArray |
Sim |
objectToArray |
Sim |
range |
Sim |
reverseArray |
Sim |
reduce |
Sim |
size |
Sim |
slice |
Sim |
zip |
Sim |
in |
Sim |
Operadores variáveis
Comando | Com suporte |
---|---|
map |
Sim |
let |
Sim |
Variáveis do sistema
Comando | Com suporte |
---|---|
$$CURRENT |
Sim |
$$DESCEND |
Sim |
$$KEEP |
Sim |
$$PRUNE |
Sim |
$$REMOVE |
Sim |
$$ROOT |
Sim |
Operador literal
Comando | Com suporte |
---|---|
literal |
Sim |
Expressões de data
Comando | Com suporte |
---|---|
dayOfYear |
Sim |
dayOfMonth |
Sim |
dayOfWeek |
Sim |
year |
Sim |
month |
Sim |
week |
Sim |
hour |
Sim |
minute |
Sim |
second |
Sim |
millisecond |
Sim |
dateToString |
Sim |
isoDayOfWeek |
Sim |
isoWeek |
Sim |
dateFromParts |
Sim |
dateToParts |
Sim |
dateFromString |
Sim |
isoWeekYear |
Sim |
Expressões condicionais
Comando | Com suporte |
---|---|
cond |
Sim |
ifNull |
Sim |
switch |
Sim |
Operador de tipo de dados
Comando | Com suporte |
---|---|
type |
Sim |
Expressões do acumulador
Comando | Com suporte |
---|---|
sum |
Sim |
avg |
Sim |
first |
Sim |
last |
Sim |
max |
Sim |
min |
Sim |
push |
Sim |
addToSet |
Sim |
stdDevPop |
Sim |
stdDevSamp |
Sim |
Operador de mesclagem
Comando | Com suporte |
---|---|
mergeObjects |
Sim |
Tipos de dados
O Azure Cosmos DB for MongoDB dá suporte a documentos codificados no formato BSON do MongoDB. A versão 4.0 da API aprimora o uso interno desse formato para melhorar o desempenho e reduzir os custos. Documentos gravados ou atualizados por meio de um ponto de extremidade que executa a versão 4.0+ se beneficiam da otimização.
Em um cenário de atualização, os documentos gravados antes da atualização para a versão 4.0+ não se beneficiarão do desempenho aprimorado até que sejam atualizados por meio de uma operação de gravação pelo ponto de extremidade 4.0+.
O suporte a documentos de 16 MB eleva o limite de tamanho dos documentos de 2 MB para 16 MB. Esse limite só se aplica às coleções criadas após a habilitação desse recurso. Depois que esse recurso estiver habilitado para a conta de banco de dados, ele não poderá ser desabilitado.
É possível habilitar 16 MB na guia recursos no portal do Azure ou então programaticamente, adicionando a funcionalidade "EnableMongo16MBDocumentSupport".
É recomendável habilitar a repetição do lado do servidor e evitar índices curinga para garantir que as solicitações com documentos maiores sejam bem-sucedidas. Se necessário, aumentar as RUs do BD ou da coleção também pode ajudar no desempenho.
Comando | Com suporte |
---|---|
Double |
Sim |
String |
Sim |
Object |
Sim |
Array |
Sim |
Binary Data |
Sim |
ObjectId |
Sim |
Boolean |
Sim |
Date |
Sim |
Null |
Sim |
32-bit Integer (int) |
Sim |
Timestamp |
Sim |
64-bit Integer (long) |
Sim |
MinKey |
Sim |
MaxKey |
Sim |
Decimal128 |
Sim |
Regular Expression |
Sim |
JavaScript |
Sim |
JavaScript (with scope) |
Sim |
Undefined |
Sim |
Índices e propriedades de índice
Índices
Comando | Com suporte |
---|---|
Single Field Index |
Sim |
Compound Index |
Sim |
Multikey Index |
Sim |
Text Index |
Não |
2dsphere |
Sim |
2d Index |
Não |
Hashed Index |
Não |
Propriedades de índice
Comando | Com suporte |
---|---|
TTL |
Sim |
Unique |
Sim |
Partial |
Não |
Case Insensitive |
No |
Sparse |
No |
Background |
Sim |
Operadores
Operadores lógicos
Comando | Com suporte |
---|---|
or |
Sim |
and |
Sim |
not |
Sim |
nor |
Sim |
Operadores de elemento
Comando | Com suporte |
---|---|
exists |
Sim |
type |
Sim |
Operadores de consulta de avaliação
Comando | Com suporte |
---|---|
expr |
Sim |
jsonSchema |
Não |
mod |
Sim |
regex |
Sim |
text |
Não (sem suporte. Use $regex.) |
where |
Não |
Em consultas de $regex, as expressões ancoradas à esquerda permitem a pesquisa de índice. No entanto, usar o modiciador 'i' (não sensível a maiúsculas e minúsculas) e o modificador 'm' (várias linhas) faz com que a coleção verifique todas as expressões.
Quando houver a necessidade de se incluir "$" ou "|", é melhor criar duas (ou mais) consultas regex. Por exemplo, considerando a seguinte consulta original find({x:{$regex: /^abc$/})
, ela deve ser modificada da seguinte maneira:
find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})
A primeira parte usará o índice para restringir a pesquisa a esses documentos começando com ^abc e a segunda parte corresponderá às entradas exatas. O operador de barra '|' atua como uma função "or" – a consulta find({x:{$regex: /^abc |^def/})
faz a correspondência dos documentos em que o campo 'x' tem valores que começam com "abc" ou "def". Para utilizar o índice, é recomendável dividir a consulta em duas consultas diferentes unidas pelo operador $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] })
.
Operadores de matriz
Comando | Com suporte |
---|---|
all |
Sim |
elemMatch |
Sim |
size |
Sim |
Operador de comentário
Comando | Com suporte |
---|---|
comment |
Sim |
Operadores de projeção
Comando | Com suporte |
---|---|
elemMatch |
Sim |
meta |
Não |
slice |
Sim |
Operadores de atualização
Operadores de atualização de campo
Comando | Com suporte |
---|---|
inc |
Sim |
mul |
Sim |
rename |
Sim |
setOnInsert |
Sim |
set |
Sim |
unset |
Sim |
min |
Sim |
max |
Sim |
currentDate |
Sim |
Operadores de atualização de matriz
Comando | Com suporte |
---|---|
$ |
Sim |
$[] |
Sim |
$[\<identifier\>] |
Sim |
addToSet |
Sim |
pop |
Sim |
pullAll |
Sim |
pull |
Sim |
push |
Sim |
pushAll |
Sim |
Atualizar modificadores
Comando | Com suporte |
---|---|
each |
Sim |
slice |
Sim |
sort |
Sim |
position |
Sim |
Operador de atualização bit a bit
Comando | Com suporte |
---|---|
bit |
Sim |
bitsAllSet |
Não |
bitsAnySet |
No |
bitsAllClear |
No |
bitsAnyClear |
Não |
Operadores geoespaciais
Operador | Com suporte |
---|---|
$geoWithin |
Sim |
$geoIntersects |
Sim |
$near |
Sim |
$nearSphere |
Sim |
$geometry |
Sim |
$minDistance |
Sim |
$maxDistance |
Sim |
$center |
Não |
$centerSphere |
No |
$box |
No |
$polygon |
Não |
Classificar operações
Ao usar a operação findOneAndUpdate
com a API do MongoDB versão 4.0, há suporte para operações de classificação em apenas um campo e em vários campos. As operações de classificação em vários campos eram uma limitação dos protocolos de fio anteriores.
Indexação
A API para MongoDB é compatível com uma variedade de índices para habilitar a classificação em vários campos, aprimorar o desempenho da consulta e impor a exclusividade.
GridFS
O Azure Cosmos DB dá suporte a GridFS por meio de qualquer driver Mongo compatível com GridFS.
Replicação
O Azure Cosmos DB oferece suporte à replicação automática nativa em camadas mais baixas. Essa lógica é estendida para atingir também réplica global e baixa. O Azure Cosmos DB não dá suporte a comandos de replicação manual.
Gravações repetíveis
As gravações repetíveis permitem que os drivers do MongoDB repitam automaticamente determinadas operações de gravação em caso de falha, mas resultam em requisitos mais rigorosos para determinadas operações, que correspondem aos requisitos de protocolo do MongoDB. Com esse recurso habilitado, as operações de atualização, incluindo exclusões, em coleções fragmentadas exigirão que a chave de fragmentação seja incluída no filtro de consulta ou na instrução de atualização.
Por exemplo, com uma coleção fragmentada, fragmentada na chave "country": para excluir todos os documentos com o campo city = "NYC"
, o aplicativo precisará executar a operação para todos os valores de chave de fragmentação (country) se as gravações repetíveis estiverem habilitadas.
db.coll.deleteMany({"country": "USA", "city": "NYC"})
- Êxitodb.coll.deleteMany({"city": "NYC"})
– Falha com o erro ShardKeyNotFound(61)
Observação
As gravações repetíveis não dão suporte a gravações não ordenadas em massa no momento. Se você quiser executar gravações em massa com as gravações repetíveis habilitadas, execute gravações ordenadas em massa.
Para habilitar o recurso, adicione a funcionalidade EnableMongoRetryableWrites à sua conta do banco de dados. Esse recurso também pode ser habilitado na guia de recursos no portal do Azure.
Fragmentação
O Azure Cosmos DB oferece suporte à fragmentação automática, do lado do servidor. Ele gerencia a criação, o posicionamento e o balanceamento de fragmentos automaticamente. O Azure Cosmos DB não dá suporte a comandos de fragmentação manual, o que significa que você não precisa invocar comandos como addShard, balancerStart, moveChunk etc. Você só precisa especificar a chave de fragmento ao criar os contêineres ou consultar os dados.
Sessões
O Azure Cosmos DB ainda não dá suporte a comandos de sessões do lado do servidor.
Vida útil (TTL)
O Azure Cosmos DB é compatível com uma TTL (vida útil) com base no carimbo de data/hora do documento. A TTL pode ser habilitada para coleções por meio do portal do Azure.
Transactions
Há suporte para transações de vários documentos em uma coleção não fragmentada. Não há suporte para transações de vários documentos entre coleções ou em coleções fragmentadas. Há um tempo limite fixo de cinco segundos para as transações.
Gerenciamento de usuários e funções
O Azure Cosmos DB ainda não dá suporte para usuários e funções. No entanto, o Azure Cosmos DB dá suporte ao Azure RBAC (controle de acesso baseado em função do Azure) e as senhas/chaves de leitura/gravação e somente leitura que podem ser obtidas por meio do portal do Azure (página da cadeia de conexão).
Problema de Gravação
Alguns aplicativos dependem de uma Preocupação de gravação, que especifica o número de respostas necessárias durante uma operação de gravação. Devido à forma como o Azure Cosmos DB lida com a replicação em segundo plano, todas as gravações são o quorum automaticamente, por padrão. Toda preocupação de gravação especificada pelo código do cliente é ignorada. Saiba mais em Como usar níveis de consistência para maximizar a disponibilidade e o desempenho.
Próximas etapas
- Saiba como usar o Studio 3T com o Azure Cosmos DB for MongoDB.
- Saiba como usar o Robo 3T com o Azure Cosmos DB for MongoDB.
- Explore exemplos do MongoDB com o Azure Cosmos DB for MongoDB.
- Tentando fazer o planejamento da capacidade para uma migração para o Azure Cosmos DB? Você pode usar informações sobre o cluster de banco de dados existente para fazer isso.
- Se você sabe apenas o número de vCores e servidores do cluster de banco de dados existente, leia sobre como estimar unidades de solicitação com vCores ou vCPUs
- Se souber as taxas de solicitação típicas da carga de trabalho do banco de dados atual, leia sobre como estimar unidades de solicitação usando o planejador de capacidade do Azure Cosmos DB