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 las partes de tu modelo de datos.
Colecciones
- No se admiten nombres de colección 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 máxima de anidación de los campos es de 20. Cada campo con tipo Array y Object agrega un nivel a la profundidad general.
_id
- El documento
_id
(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 las cadenas vacías ("") ni el 0 de 64 bits (0L).
Valores
- No se admiten los tipos de BSON JavaScript, Symbol, DBPointer y Undefined.
Fecha
- Los valores de fecha deben estar dentro de
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]
.
Decimal128
- Los valores
NaN
, infinito positivo e infinito negativo se canonizan en la escritura. - No se admiten las 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 por
_id
ascendente.
Agregaciones
- Las agregaciones se limitan a 250 etapas.
- No se admiten las etapas
$merge
y$out
. Consulta la sección de comandos para obtener una lista completa de las etapas y los operadores admitidos.
Escrituras
- Los documentos con nombres que comienzan con un signo de dólar (“$”) no se pueden crear con la función de upsert de
update
ofindAndModify
. - Asegúrate de que tu 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 escrituras reintentables.
Transacciones
- No se admiten las transacciones de instantáneas.
- Las transacciones usan controles de simultaneidad pesimistas con bloqueo. Para evitar la contención de bloqueos, limita la cantidad de datos que se leen en una transacción.
Índices
- No se admiten los índices de comodín.
- 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 la función de varias claves habilitada no se cambian automáticamente a índices de varias claves según las operaciones de escritura. Debes habilitar la opción de varias claves cuando crees el índice, y no se puede cambiar.
Preocupación por la lectura
- Solo se admite el nivel de confirmación de lectura
majority
.
Confirmación de escritura
- Solo se admiten las confirmaciones de escritura
w: 'majority'
yw: 1
.
Preferencia de lectura
- Solo se admiten los problemas 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 enumeran en las siguientes tablas.
- La mayoría de los comandos aceptan
maxTimeMS
, pero es posible que lo ignoren.
Consultas y escrituras
Comando | Campos no admitidos |
---|---|
|
|
|
|
|
|
|
|
|
Dentro de una sentencia de eliminación:
|
|
|
|
|
|
|
|
|
|
(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 hace nada.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 admitidas, consulta Tipos de datos, controladores y funciones de MongoDB admitidos.