Diferencias de comportamiento
En esta página, se describen las diferencias de comportamiento entre Firestore con compatibilidad con MongoDB y MongoDB.Para obtener un desglose de las funciones compatibles según la versión de MongoDB, consulta lo siguiente:
Conexiones y bases de datos
- Cada conexión se limita a una sola base de datos de Firestore con compatibilidad con MongoDB.
- Se debe crear una base de datos antes de conectarse a ella.
Nombre
Las siguientes diferencias se aplican a la asignación de nombres a las partes de tu modelo de datos.
Colecciones
- No se admiten nombres de colecciones que coincidan con
__.*__
.
Campos
- No se admiten nombres de campos que coincidan con
__.*__
. - No se admiten nombres de campos vacíos.
Documentos
- El tamaño máximo del documento es de 4 MiB.
- La profundidad de anidación máxima de los campos es de 20. Cada campo de tipo Array y Object agrega un nivel a la profundidad general.
_id
_id
del documento (campo de nivel superior) debe ser un ObjectId, una cadena o un número entero de 64 bits. No se admiten otros tipos de BSON.- No se admiten la cadena vacía ("") ni el 0 de 64 bits (0L).
Valores
- No se admiten los tipos BSON de JavaScript, Symbol, DBPointer y Undefined.
Fecha
- Los valores de fecha deben estar en
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
.
Decimal128
- Los valores
NaN
, infinito positivo e infinito negativo se canonicalizan durante la escritura. - No se admiten operaciones aritméticas en Decimal128.
Doble
- Los valores de
NaN
se canonizan en la escritura.
Expresión regular
- Las opciones de expresión regular deben ser válidas ("i", "m", "s", "u" o "x") y proporcionarse en orden alfabético sin repeticiones.
Consultas
- El orden de clasificación natural (consultas sin una clasificación explícita) no coincide con el orden de inserción ni con el orden ascendente por
_id
.
Agregaciones
- Las agregaciones tienen un límite de 250 etapas.
- Las etapas
$merge
y$out
no son compatibles. Consulta la sección de comandos para obtener una lista completa de las etapas y los operadores compatibles.
Escrituras
- No se pueden crear documentos con nombres que comiencen con un signo de dólar ("$") con la función de inserción y actualización de
update
ofindAndModify
. - Asegúrate de que la cadena de conexión incluya
retryWrites=false
(o usa el método adecuado para tu controlador) para asegurarte de que el controlador no intente usar esta función. No se admiten las operaciones de escritura que admiten reintentos.
Transacciones
- No se admiten las transacciones de instantáneas.
- Las transacciones usan controles de simultaneidad pesimistas con bloqueos. Para evitar la contención de bloqueos, limita la cantidad de datos que se leen en una transacción.
Índices
- Los índices de comodines no son compatibles.
- No se admiten los índices únicos
- Firestore con compatibilidad con MongoDB no crea automáticamente un índice en
_id
, pero garantiza que los valores de_id
sean únicos dentro de una colección. - Los índices sin varias claves habilitadas no se cambian automáticamente a índices de varias claves según las operaciones de escritura. Debes habilitar la clave múltiple cuando creas el índice, y la opción no se puede cambiar.
Leer preocupación
- Solo se admite el nivel de preocupación de lectura
majority
.
Cómo escribir una inquietud
- Solo se admiten las inquietudes de escritura
w: 'majority'
yw: 1
.
Cómo leer preferencias
- Solo se admiten las inquietudes de lectura
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
ynearest
.
Errores
- Los códigos y mensajes de error pueden diferir entre Firestore con compatibilidad con MongoDB y MongoDB.
Comandos
Las siguientes diferencias de comportamiento se aplican a comandos específicos.
- No se admiten los comandos que no se indican en las siguientes tablas.
- La mayoría de los comandos aceptan
maxTimeMS
, pero se puede ignorar.
Consultas y operaciones de escritura
Comando | Campos no admitidos |
---|---|
|
|
|
|
|
|
|
|
|
Dentro de una sentencia DELETE:
|
|
|
|
|
|
|
|
|
|
(ninguno) |
Transacciones y sesiones
Comando | Campos no admitidos |
---|---|
|
|
|
|
|
(ninguno) |
Administración
Comando | Campos no admitidos | Notas |
---|---|---|
|
|
filter debe estar vacío si se proporciona. |
|
|
authorizedCollections debe ser falso si se proporciona. |
|
|
|
|
|
Este comando no realiza ninguna acción.capped debe ser falso si se proporciona. |
¿Qué sigue?
- Ejecuta la Guía de inicio rápido: Crea una base de datos y conéctate a ella.
- Para obtener una lista completa de las funciones compatibles, consulta Tipos de datos, controladores y funciones compatibles de MongoDB.