Azure Cosmos DB for MongoDB (versión 3.6): sintaxis y características admitidas

SE APLICA A: MongoDB

Azure Cosmos DB es un servicio de base de datos con varios modelos y de distribución global de Microsoft. Puede comunicarse con Azure Cosmos DB for MongoDB mediante cualquiera de los controladores del cliente de MongoDB de código abierto. Azure Cosmos DB for MongoDB permite usar los controladores de cliente existentes mediante la adhesión al protocolo de conexión de MongoDB.

Con Azure Cosmos DB for MongoDB, puede disfrutar de las ventajas de MongoDB a las que está acostumbrado, con todas las funcionalidades empresariales que ofrece Azure Cosmos DB: distribución global, particionamiento automático, garantías de disponibilidad y latencia, cifrado en reposo, copias de seguridad y mucho más.

Nota:

La versión 3.6 de Azure Cosmos DB for MongoDB no tiene planes actuales para el fin del ciclo de vida. El aviso mínimo para un próximo fin del ciclo de vida es de tres años.

Compatibilidad con protocolos

Azure Cosmos DB for MongoDB es compatible de manera predeterminada con la versión 3.6 del servidor de MongoDB para las cuentas nuevas. A continuación se enumeran los operadores admitidos y las limitaciones o excepciones. Cualquier controlador de cliente que reconozca estos protocolos podrá conectarse a Azure Cosmos DB for MongoDB. Al crear cuentas de la API de Azure Cosmos DB for MongoDB, la versión 3.6 de la cuenta tiene el punto de conexión con el formato *.mongo.cosmos.azure.com, mientras que la versión 3.2 de la cuenta tiene el punto de conexión con el formato *.documents.azure.com.

Compatibilidad con lenguajes de consulta

Azure Cosmos DB for MongoDB proporciona una compatibilidad completa con las construcciones del lenguaje de consulta de MongoDB. En las secciones siguientes se muestra la lista detallada de operaciones de servidor, operadores, fases, comandos y opciones admitidos actualmente en Azure Cosmos DB.

Nota:

En este artículo solo se enumeran los comandos de servidor admitidos y se excluyen las funciones contenedoras del lado cliente. Las funciones contenedoras del lado cliente, como deleteMany() y updateMany() usan internamente los comandos de servidor delete() y update(). Las funciones que usan comandos de servidor admitidos son compatibles con Azure Cosmos DB for MongoDB.

Comandos de base de datos

Azure Cosmos DB for MongoDB admite los siguientes comandos de base de datos:

Comandos de operación de consulta y escritura

Get-Help Compatible
change streams
delete
eval No
find
findAndModify
getLastError
getMore
getPrevError No
insert
parallelCollectionScan No
resetError No
update

Comandos de autenticación

Get-Help Compatible
authenticate
getnonce
logout

Comandos de administración

Get-Help Compatible
cloneCollectionAsCapped No
collMod No
connectionStatus No
convertToCapped No
copydb No
create
createIndexes
currentOp
drop
dropDatabase
dropIndexes
filemd5
killCursors
killOp No
listCollections
listDatabases
listIndexes
reIndex
renameCollection No

Comandos de diagnóstico

Get-Help Compatible
buildInfo
collStats
connPoolStats No
connectionStatus No
dataSize No
dbHash No
dbStats
explain
features No
hostInfo
listDatabases
listCommands No
profiler No
serverStatus No
top No
whatsmyuri

Canalización de agregación

Comandos de agregación

Get-Help Compatible
aggregate
count
distinct
mapReduce No

Fases de agregación

Get-Help Compatible
addFields
bucket No
bucketAuto No
changeStream
collStats No
count
currentOp No
facet
geoNear
graphLookup
group
indexStats No
limit
listLocalSessions No
listSessions No
lookup Parcial
match
out
project
redact
replaceRoot
replaceWith No
sample
skip
sort
sortByCount
unwind

Nota

$lookup todavía no admite la característica de subconsultas no correlacionadas introducida en la versión 3.6 del servidor. Recibirá un error con un mensaje que contiene el texto let is not supported si intenta utilizar el operador $lookup con los campos let y pipeline.

Expresiones booleanas

Get-Help Compatible
and
not
or

Expresiones de conjunto

Get-Help Compatible
setEquals
setIntersection
setUnion
setDifference
setIsSubset
anyElementTrue
allElementsTrue

Expresiones de comparación

Nota:

La API de MongoDB no admite expresiones de comparación con un literal de matriz en la consulta.

Get-Help Compatible
cmp
eq
gt
gte
lt
lte
ne
in
nin

Expresiones aritméticas

Get-Help Compatible
abs
add
ceil
divide
exp
floor
ln
log
log10
mod
multiply
pow
sqrt
subtract
trunc

Expresiones de cadena

Get-Help Compatible
concat
indexOfBytes
indexOfCP
split
strLenBytes
strLenCP
strcasecmp
substr
substrBytes
substrCP
toLower
toUpper

Operador de búsqueda de texto

Get-Help Compatible
meta No

Expresiones de matriz

Get-Help Compatible
arrayElemAt
arrayToObject
concatArrays
filter
indexOfArray
isArray
objectToArray
range
reverseArray
reduce
size
slice
zip
in

Operadores de variable

Get-Help Compatible
map
let

Variables del sistema

Get-Help Compatible
$$CURRENT
$$DESCEND
$$KEEP
$$PRUNE
$$REMOVE
$$ROOT

Operador literal

Get-Help Compatible
literal

Expresiones de fecha

Get-Help Compatible
dayOfYear
dayOfMonth
dayOfWeek
year
month
week
hour
minute
second
millisecond
dateToString
isoDayOfWeek
isoWeek
dateFromParts
dateToParts
dateFromString
isoWeekYear

Expresiones condicionales

Get-Help Compatible
cond
ifNull
switch

Operador de tipo de datos

Get-Help Compatible
type

Expresiones de acumulador

Get-Help Compatible
sum
avg
first
last
max
min
push
addToSet
stdDevPop
stdDevSamp

Operador de combinación

Get-Help Compatible
mergeObjects

Tipos de datos

Get-Help Compatible
Double
String
Object
Array
Binary Data
ObjectId
Boolean
Date
Null
32-bit Integer (int)
Timestamp
64-bit Integer (long)
MinKey
MaxKey
Decimal128
Regular Expression
JavaScript
JavaScript (with scope)
Undefined

Índices y propiedades de índice

Índices

Get-Help Compatible
Single Field Index
Compound Index
Multikey Index
Text Index No
2dsphere
2d Index No
Hashed Index No

Propiedades de índice

Get-Help Compatible
TTL
Unique
Partial No
Case Insensitive No
Sparse No
Background

Operadores

Operadores lógicos

Get-Help Compatible
or
and
not
nor

Operadores de elementos

Get-Help Compatible
exists
type

Operadores de consulta de evaluación

Get-Help Compatible
expr
jsonSchema No
mod
regex
text No (no es compatible; use $regex en su lugar).
where No

En las consultas de $regex, las expresiones ancladas a la izquierda permiten la búsqueda de índice. Sin embargo, si utiliza el modificador 'i' (no distingue mayúsculas y minúsculas) y el modificador 'm' modificador (multilínea), se realiza el examen de colección de todas las expresiones.

Cuando es necesario incluir $ o |, es mejor crear dos (o más) consultas regex. Por ejemplo, dada la siguiente consulta original: find({x:{$regex: /^abc$/}), tiene que modificarse de la siguiente forma:

find({x:{$regex: /^abc/, x:{$regex:/^abc$/}})

La primera parte utilizará el índice para restringir la búsqueda a esos documentos que empiezan por ^ abc y la segunda parte buscará coincidencias con los datos exactos. El operador de barra | actúa como una función "or": la consulta find({x:{$regex: /^abc |^def/}) hace coincidir los documentos en los que el campo x tiene valores que comienza por "abc" o "def". Para utilizar el índice, se recomienda dividir la consulta en dos consultas distintas combinadas mediante el operador $or: find( {$or : [{x: $regex: /^abc/}, {$regex: /^def/}] }).

Operadores de matriz

Get-Help Compatible
all
elemMatch
size

Operador de comentario

Get-Help Compatible
comment

Operadores de proyección

Get-Help Compatible
elemMatch
meta No
slice

Operadores de actualización

Operadores de actualización de campo

Get-Help Compatible
inc
mul
rename
setOnInsert
set
unset
min
max
currentDate

Operadores de actualización de matriz

Get-Help Compatible
$
$[]
$[\<identifier\>]
addToSet
pop
pullAll
pull
push
pushAll

Modificadores de actualización

Get-Help Compatible
each
slice
sort
position

Operador de actualización bit a bit

Get-Help Compatible
bit
bitsAllSet No
bitsAnySet No
bitsAllClear No
bitsAnyClear No

Operadores de geoespaciales

Operator Compatible
$geoWithin
$geoIntersects
$near
$nearSphere
$geometry
$minDistance
$maxDistance
$center No
$centerSphere No
$box No
$polygon No

Operaciones de ordenación

Cuando se usa la operación findOneAndUpdate, se admiten las operaciones de ordenación en un solo campo, pero no se admiten las operaciones de ordenación en varios campos.

Indización

La API para MongoDB admite varios índices para habilitar la ordenación en varios campos, mejorar el rendimiento de las consultas y exigir la unicidad.

GridFS

Azure Cosmos DB admite GridFS a través de cualquier controlador MongoDB compatible con GridFS.

Replicación

Azure Cosmos DB admite la replicación automática y nativa en las capas más inferiores. Esta lógica se amplía para lograr también una replicación global de baja latencia. Azure Cosmos DB no es compatible con comandos de replicación manuales.

Escrituras reintentables

Azure Cosmos DB no admite aún escrituras reintentables. Los controladores de cliente deben agregar retryWrites=false a su cadena de conexión.

Particionamiento

Azure Cosmos DB admite el particionamiento de servidor automático. Administra la creación de particiones, la ubicación y el equilibrio de forma automática. Azure Cosmos DB no admite los comandos de particionamiento manuales, lo que significa que no tiene que invocar comandos como addShard, balancerStart, moveChunk, etc. Solo necesita especificar la clave de partición al crear los contenedores o consultar los datos.

Sesiones

Azure Cosmos DB todavía no admite los comandos de sesión del lado servidor.

Período de vida (TTL)

Azure Cosmos DB admite un período de vida (TTL) basado en la marca de tiempo del documento. TTL se puede habilitar para las colecciones mediante Azure Portal.

Administración de usuarios y roles

Azure Cosmos DB todavía no admite usuarios y roles. Sin embargo, admite el control de acceso basado en rol de Azure (RBAC de Azure) y claves o contraseñas de solo lectura y escritura que se pueden obtener mediante el panel de cadena de conexión en Azure Portal.

Write Concern

Algunas aplicaciones se basan en Write Concern, que especifica el número de respuestas necesarias durante una operación de escritura. Debido a cómo Azure Cosmos DB controla la replicación, todas las escrituras son automáticamente y de forma predeterminada el cuórum mayoritario cuando se utiliza la coherencia fuerte. Cualquier nivel de Write Concern especificado por el código de cliente se ignora. Más información en el artículo sobre el uso de los niveles de coherencia para maximizar la disponibilidad y el rendimiento.

Pasos siguientes