Solo es relevante para la edición Enterprise de Cloud Firestore. |
En esta página, se describen las diferencias de comportamiento entre Cloud 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 Cloud Firestore compatible 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 y 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. - La etapa
$lookup
se limita a especificar unforeignField
en_id
.
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
Se admiten el aislamiento de instantáneas y las transacciones serializables.
De forma predeterminada, las transacciones usan controles de simultaneidad optimista con aislamiento de instantáneas.
Preocupación por la lectura
Cloud Firestore con compatibilidad con MongoDB admite las opciones de lectura
snapshot
,majority
ylinearizable
. El valor predeterminado essnapshot
, que hace referencia al aislamiento de instantáneas.Usa
linearizable
cuando la aplicación requiera coherencia estricta y deba evitar anomalías de sesgo de escritura. Para otras cargas de trabajo,snapshot
puede mejorar el rendimiento y reducir la contención de transacciones.
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
.
Índices
- No se admiten los índices de comodín.
- Cloud 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.
Errores
- Los códigos y mensajes de error pueden diferir entre Cloud 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 se ignore.
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.