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 |
Sí |
delete |
Sí |
eval |
No |
find |
Sí |
findAndModify |
Sí |
getLastError |
Sí |
getMore |
Sí |
getPrevError |
No |
insert |
Sí |
parallelCollectionScan |
No |
resetError |
No |
update |
Sí |
Comandos de autenticación
Get-Help |
Compatible |
authenticate |
Sí |
getnonce |
Sí |
logout |
Sí |
Comandos de administración
Get-Help |
Compatible |
cloneCollectionAsCapped |
No |
collMod |
N.º |
connectionStatus |
N.º |
convertToCapped |
N.º |
copydb |
No |
create |
Sí |
createIndexes |
Sí |
currentOp |
Sí |
drop |
Sí |
dropDatabase |
Sí |
dropIndexes |
Sí |
filemd5 |
Sí |
killCursors |
Sí |
killOp |
No |
listCollections |
Sí |
listDatabases |
Sí |
listIndexes |
Sí |
reIndex |
Sí |
renameCollection |
No |
Comandos de diagnóstico
Get-Help |
Compatible |
buildInfo |
Sí |
collStats |
Sí |
connPoolStats |
No |
connectionStatus |
N.º |
dataSize |
N.º |
dbHash |
No |
dbStats |
Sí |
explain |
Sí |
features |
No |
hostInfo |
Sí |
listDatabases |
Sí |
listCommands |
No |
profiler |
N.º |
serverStatus |
N.º |
top |
No |
whatsmyuri |
Sí |
Canalización de agregación
Comandos de agregación
Get-Help |
Compatible |
aggregate |
Sí |
count |
Sí |
distinct |
Sí |
mapReduce |
No |
Fases de agregación
Get-Help |
Compatible |
addFields |
Sí |
bucket |
No |
bucketAuto |
No |
changeStream |
Sí |
collStats |
No |
count |
Sí |
currentOp |
No |
facet |
Sí |
geoNear |
Sí |
graphLookup |
Sí |
group |
Sí |
indexStats |
No |
limit |
Sí |
listLocalSessions |
No |
listSessions |
No |
lookup |
Parcial |
match |
Sí |
out |
Sí |
project |
Sí |
redact |
Sí |
replaceRoot |
Sí |
replaceWith |
No |
sample |
Sí |
skip |
Sí |
sort |
Sí |
sortByCount |
Sí |
unwind |
Sí |
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 |
Sí |
not |
Sí |
or |
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í |
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 |
Sí |
dateToParts |
Sí |
dateFromString |
Sí |
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
Get-Help |
Compatible |
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í |
Índices y propiedades de índice
Índices
Get-Help |
Compatible |
Single Field Index |
Sí |
Compound Index |
Sí |
Multikey Index |
Sí |
Text Index |
No |
2dsphere |
Sí |
2d Index |
No |
Hashed Index |
No |
Propiedades de índice
Get-Help |
Compatible |
TTL |
Sí |
Unique |
Sí |
Partial |
No |
Case Insensitive |
N.º |
Sparse |
No |
Background |
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 |
Sí |
jsonSchema |
No |
mod |
Sí |
regex |
Sí |
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 |
Sí |
elemMatch |
Sí |
size |
Sí |
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 |
N.º |
bitsAllClear |
N.º |
bitsAnyClear |
No |
Operadores de geoespaciales
Operator |
Compatible |
$geoWithin |
Sí |
$geoIntersects |
Sí |
$near |
Sí |
$nearSphere |
Sí |
$geometry |
Sí |
$minDistance |
Sí |
$maxDistance |
Sí |
$center |
No |
$centerSphere |
N.º |
$box |
N.º |
$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