Diferencias de comportamiento
En esta página se describen las diferencias de comportamiento entre Firestore con compatibilidad con MongoDB y MongoDB.
Para ver un desglose de las funciones compatibles según la versión de MongoDB, consulta lo siguiente:
Conexiones y bases de datos
- Cada conexión está limitada a una sola base de datos de Firestore con compatibilidad con MongoDB.
- Debes crear una base de datos antes de conectarte a ella.
Nomenclatura
Las siguientes diferencias se aplican a las partes de los nombres de su modelo de datos.
Colecciones
- No se admiten nombres de colección que coincidan con
__.*__
.
Campos
- No se admiten nombres de campo que coincidan con
__.*__
. - No se admiten nombres de campo vacíos.
Redactar 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 de tipo Array y Object añade un nivel a la profundidad general.
_id
- El documento
_id
(campo de nivel superior) debe ser un ObjectId, una cadena o un entero de 64 bits. No se admiten otros tipos de BSON. - No se admiten las cadenas vacías ("") ni el valor 0 de 64 bits (0L).
Valores
- No se admiten los tipos BSON 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 normalizan al escribir. - No se admiten operaciones aritméticas en Decimal128.
Doble
- Los valores
NaN
se canonizan al escribir.
Expresión regular
- Las opciones de expresiones regulares deben ser válidas ("i", "m", "s", "u" o "x") y proporcionarse en orden alfabético sin repeticiones.
Consultas
- El orden natural (consultas sin un orden explícito) no coincide con el orden de inserción ni con el orden ascendente por
_id
.
Agregaciones
- Las agregaciones tienen un límite de 250 fases.
- Las fases
$merge
y$out
no se admiten. Consulta la sección Comandos para ver una lista completa de las fases y los operadores admitidos. - La fase
$lookup
no admite los camposlet
ypipeline
.
Escrituras
- Los documentos cuyos nombres empiezan por el signo de dólar ("$") no se pueden crear con la función de inserción o actualización 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 que el controlador no intente usar esta función. No se admiten las escrituras reintentables.
Transacciones
Se admiten el aislamiento de instantáneas y las transacciones serializables.
De forma predeterminada, las transacciones usan controles de simultaneidad optimistas con aislamiento de instantáneas.
Leer preocupación
La compatibilidad de Firestore con MongoDB admite los
snapshot
,majority
ylinearizable
read concerns. El valor predeterminado essnapshot
, que hace referencia al aislamiento de la captura.Usa
linearizable
cuando la aplicación requiera una coherencia estricta y deba evitar anomalías de sesgo de escritura. En otras cargas de trabajo,snapshot
puede mejorar el rendimiento y reducir la contención de transacciones.
Escribir preocupación
- Solo se admiten los problemas de escritura
w: 'majority'
yw: 1
.
Preferencia de lectura
- Solo se admiten los niveles de aislamiento de lectura
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
ynearest
.
Índices
- No se admiten índices comodín.
- Firestore con compatibilidad con MongoDB no crea automáticamente un índice en
_id
, pero asegura que los valores de_id
sean únicos en una colección. - Los índices sin la función de varias claves habilitada no se cambian automáticamente a índices de varias claves en función de las operaciones de escritura. Debes habilitar la opción de varias claves al crear el índice, y no se puede cambiar.
Errores
- Los códigos y mensajes de error pueden variar entre Firestore con compatibilidad con MongoDB y MongoDB.
Comandos
Las siguientes diferencias de comportamiento se aplican a comandos específicos.
- Los comandos que no aparecen en las siguientes tablas no se admiten.
maxTimeMS
se acepta en la mayoría de los comandos, pero puede ignorarse.
Consultas y escrituras
Comando | Campos no admitidos |
---|---|
|
|
|
|
|
|
|
|
|
En una instrucción de eliminación:
|
|
|
|
|
|
|
|
|
|
(ninguna) |
Transacciones y sesiones
Comando | Campos no admitidos |
---|---|
|
|
|
|
|
(ninguna) |
Administración
Comando | Campos no admitidos | Notas |
---|---|---|
|
|
filter debe estar vacío si se proporciona. |
|
|
authorizedCollections debe ser false si se proporciona. |
|
|
|
|
|
Este comando no tiene ningún efecto.capped debe ser false si se proporciona. |
Siguientes pasos
- Sigue los pasos de la guía de inicio rápido para crear una base de datos y conectarte a ella.
- Para ver una lista completa de las funciones admitidas, consulta Tipos de datos, controladores y funciones de MongoDB admitidos.