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:
- Funciones compatibles: 8.0
- Funciones compatibles: 7.0
- Funciones compatibles: 6.0
- Funciones compatibles: 5.0
Conexiones y bases de datos
- Cada conexión se limita a una sola base de datos de 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 NaNse 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 _idascendente.
Datos recopilados
- Las agregaciones se limitan a 250 etapas.
- No se admiten las etapas $mergey$out. Consulta la sección de comandos para obtener una lista completa de las etapas y los operadores admitidos.
- La etapa $lookupno admite los camposletypipeline.
Escrituras
- Los documentos con nombres que comienzan con un signo de dólar (“$”) no se pueden crear con la función de upsert de updateofindAndModify.
- 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
- Firestore con compatibilidad con MongoDB admite las opciones de lectura - snapshot,- majorityy- linearizable. El valor predeterminado es- snapshot, que hace referencia al aislamiento de instantáneas.- Usa - linearizablecuando la aplicación requiera coherencia estricta y deba evitar anomalías de sesgo de escritura. Para otras cargas de trabajo,- snapshotpuede 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_preferredynearest.
Índices
- No se admiten los índices de comodín.
- Firestore con compatibilidad con MongoDB no crea automáticamente un índice en _id, pero garantiza que los valores de_idsean ú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 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 compatibles | 
|---|---|
| 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 
| 
 | 
 
 
 
 
 
 | 
| 
 | 
 
 | 
| 
 | 
 
 
 | 
| 
 | 
 
 Dentro de una sentencia de eliminación: 
 
 | 
| 
 | 
 
 
 
 
 
 
 | 
| 
 | 
 
 
 
 | 
| 
 | 
 
 
 
 | 
| 
 | 
 | 
| 
 | (ninguno) | 
Transacciones y sesiones
| Comando | Campos no compatibles | 
|---|---|
| 
 | 
 | 
| 
 | 
 | 
| 
 | (ninguno) | 
Administración
| Comando | Campos no compatibles | Notas | 
|---|---|---|
| 
 | 
 
 | filterdebe estar vacío si se proporciona. | 
| 
 | 
 | authorizedCollectionsdebe ser falso si se proporciona. | 
| 
 | 
 | |
| 
 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | Este comando no hace nada. cappeddebe 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.