Azure Cosmos DB es un servicio de base de datos con varios modelos y de distribución global de Microsoft. Puede comunicarse con la API de Azure Cosmos DB para MongoDB mediante cualquiera de los controladores del cliente de MongoDB de código abierto. La API de Azure Cosmos DB para MongoDB permite usar los controladores de cliente existentes mediante la adhesión al protocolo de conexión de MongoDB.
Con la API de Azure Cosmos DB para MongoDB, puede disfrutar de las ventajas de MongoDB a las que está acostumbrado, con todas las funcionalidades empresariales que ofrece Cosmos DB: distribución global, particionamiento automático, garantías de disponibilidad y latencia, cifrado en reposo, copias de seguridad y mucho más.
Compatibilidad con protocolos
A continuación se enumeran los operadores admitidos y las limitaciones o excepciones. Cualquier controlador de cliente que reconozca estos protocolos podrá conectarse a la API de Azure Cosmos DB para MongoDB. Cuando se usa la API de Azure Cosmos DB para las cuentas de MongoDB, las versiones 3.6 y posteriores de las cuentas tienen el punto de conexión con el formato *.mongo.cosmos.azure.com, mientras que la versión 3.2 de las cuentas tiene el punto de conexión con el formato *.documents.azure.com.
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 la API de Azure Cosmos DB para MongoDB.
Compatibilidad con lenguajes de consulta
La API de Azure Cosmos DB para MongoDB proporciona una compatibilidad completa con las construcciones del lenguaje de consulta de MongoDB. A continuación, encontrará una lista detallada de las opciones, comandos, fases, operadores y operaciones admitidos actualmente.
Comandos de base de datos
La API de Azure Cosmos DB para MongoDB admite los siguientes comandos de base de datos:
$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
Sí
$not
Sí
$or
Sí
Expresiones de conversión
Get-Help
Compatible
$convert
Sí
$toBool
Sí
$toDate
Sí
$toDecimal
Sí
$toDouble
Sí
$toInt
Sí
$toLong
Sí
$toObjectId
Sí
$toString
Sí
Expresiones de conjunto
Get-Help
Compatible
$setEquals
Sí
$setIntersection
Sí
$setUnion
Sí
$setDifference
Sí
$setIsSubset
Sí
$anyElementTrue
Sí
$allElementsTrue
Sí
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
Sí
$eq
Sí
$gt
Sí
$gte
Sí
$lt
Sí
$lte
Sí
$ne
Sí
$in
Sí
$nin
Sí
Expresiones aritméticas
Get-Help
Compatible
$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í
Expresiones de cadena
Get-Help
Compatible
$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í
Operador de búsqueda de texto
Get-Help
Compatible
$meta
No
Expresiones de matriz
Get-Help
Compatible
$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í
Operadores de variable
Get-Help
Compatible
$map
Sí
$let
Sí
Variables del sistema
Get-Help
Compatible
$$CURRENT
Sí
$$DESCEND
Sí
$$KEEP
Sí
$$PRUNE
Sí
$$REMOVE
Sí
$$ROOT
Sí
Operador literal
Get-Help
Compatible
$literal
Sí
Expresiones de fecha
Get-Help
Compatible
$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
Yes
$dateToParts
Yes
$dateFromString
Yes
$isoWeekYear
Sí
Expresiones condicionales
Get-Help
Compatible
$cond
Sí
$ifNull
Sí
$switch
Sí
Operador de tipo de datos
Get-Help
Compatible
$type
Sí
Expresiones de acumulador
Get-Help
Compatible
$sum
Sí
$avg
Sí
$first
Sí
$last
Sí
$max
Sí
$min
Sí
$push
Sí
$addToSet
Sí
$stdDevPop
Sí
$stdDevSamp
Sí
Operador de combinación
Get-Help
Compatible
$mergeObjects
Sí
Tipos de datos
La API de Azure Cosmos DB para MongoDB admite documentos codificados en formato BSON de MongoDB. La versión 4.0 de la API mejora el uso interno de este formato, lo que supone mejorar el rendimiento y reducir los costos. Los documentos escritos o actualizados con un punto de conexión que ejecute la versión 4.0 se beneficiarán de esta mejora.
En un escenario de actualización, los documentos escritos antes de la actualización a la versión 4.0 no se beneficiarán del rendimiento mejorado hasta que se actualicen por medio de una operación de escritura que pase por el punto de conexión 4.0.
Get-Help
Compatible
Double
Sí
String
Sí
Object
Sí
Array
Sí
Binary Data
Sí
ObjectId
Sí
Boolean
Sí
Date
Sí
Null
Sí
Entero de 32 bits (int)
Sí
Timestamp
Sí
Entero de 64 bits (long)
Sí
MinKey
Sí
MaxKey
Sí
Decimal128
Sí
Expresión regular
Sí
JavaScript
Sí
JavaScript (con ámbito)
Sí
No definido
Sí
Índices y propiedades de índice
Índices
Get-Help
Compatible
Índice de campo único
Sí
Índice compuesto
Sí
Índice de varias claves
Sí
Índice de texto
No
2dsphere
Sí
Índice 2d
No
Índice de hash
Sí
Propiedades de índice
Get-Help
Compatible
TTL
Sí
Único
Sí
Parcial
No
No distingue mayúsculas de minúsculas
No
Dispersos
No
Información previa
Sí
Operadores
Operadores lógicos
Get-Help
Compatible
$or
Sí
$and
Sí
$not
Sí
$nor
Sí
Operadores de elementos
Get-Help
Compatible
$exists
Sí
$type
Sí
Operadores de consulta de evaluación
Get-Help
Compatible
$expr
No
$jsonSchema
No
$mod
Sí
$regex
Sí
$text
No (No admitido. Utilice $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/}) coincide con los documentos con los que el campo "x" tiene un valor 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
Sí
$elemMatch
Sí
$size
Sí
Operador de comentario
Get-Help
Compatible
$comment
Sí
Operadores de proyección
Get-Help
Compatible
$elemMatch
Sí
$meta
No
$slice
Sí
Operadores de actualización
Operadores de actualización de campo
Get-Help
Compatible
$inc
Sí
$mul
Sí
$rename
Sí
$setOnInsert
Sí
$set
Sí
$unset
Sí
$min
Sí
$max
Sí
$currentDate
Sí
Operadores de actualización de matriz
Get-Help
Compatible
$
Sí
$[]
Sí
$[<identifier>]
Sí
$addToSet
Sí
$pop
Sí
$pullAll
Sí
$pull
Sí
$push
Sí
$pushAll
Sí
Modificadores de actualización
Get-Help
Compatible
$each
Sí
$slice
Sí
$sort
Sí
$position
Sí
Operador de actualización bit a bit
Get-Help
Compatible
$bit
Sí
$bitsAllSet
No
$bitsAnySet
No
$bitsAllClear
No
$bitsAnyClear
No
Operadores de geoespaciales
Operator
Compatible
$geoWithin
Sí
$geoIntersects
Sí
$near
Sí
$nearSphere
Sí
$geometry
Sí
$minDistance
Sí
$maxDistance
Sí
$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 de MongoDB admite una variedad de índices para habilitar la ordenación en varios campos, mejorar el rendimiento de las consultas y aplicar la unidad.
GridFS
Azure Cosmos DB admite GridFS con cualquier controlador Mongo 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. Cosmos DB no es compatible con comandos de replicación manuales.
Escrituras reintentables
Cosmos DB no admite aún escrituras reintentables. Los controladores cliente deben agregar el parámetro de URL "retryWrites=false" a su cadena de conexión. Se pueden agregar más parámetros de URL si se les antepone el prefijo "&".
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 comandos de particionamiento manual, lo que significa que no tiene que invocar comandos como addShard, balancerStart, moveChunk, etc. Solo tiene que especificar la clave de partición al crear los contenedores o consultar los datos.
Sesiones
Azure Cosmos DB todavía no admite comandos de sesiones 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.
Transacciones
Las transacciones de varios documentos se admiten en una colección no particionada. Las transacciones de varios documentos no se admiten en colecciones ni en colecciones con particiones. El tiempo de espera de las transacciones es un valor fijo de 5 segundos.
Administración de usuarios y roles
Azure Cosmos DB no admite aún usuarios y roles. Sin embargo, Cosmos DB admite el control de acceso basado en rol de Azure (Azure RBAC) y claves o contraseñas de solo lectura y escritura que se pueden obtener mediante Azure Portal (página Cadena de conexión).
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 la forma en la que Cosmos DB controla la replicación en un segundo plano todas las escrituras se establecen automáticamente como cuórum de forma predeterminada. 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
Aprenda a usar Studio 3T con la API de Azure Cosmos DB para MongoDB.
Aprenda a usar Robo 3T con la API de Azure Cosmos DB para MongoDB.
Explore ejemplos de MongoDB con la API de Azure Cosmos DB para MongoDB.
¿Intenta planear la capacidad de una migración a Azure Cosmos DB? Para ello, puede usar información sobre el clúster de bases de datos existente.