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 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.
Datos recopilados
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 un foreignField 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 o findAndModify.
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, majority y linearizable. El valor predeterminado es snapshot, 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' y w: 1.
Preferencia de lectura
Solo se admiten los problemas de lectura primary, primaryPreferred, primary_preferred, secondary_preferred y nearest.
Í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 _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 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
find
comment
readConcern
max
min
returnKey
showRecordId
tailable
oplogReplay
noCursorTimeout
awaitData
allowPartialResults
collation
allowDiskUsage
let
aggregate
bypassDocumentValidation
readConcern
collation
hint
comment
let
insert
bypassDocumentValidation
comment
update
collation
arrayFilters
hint
delete
comment
write
Dentro de una sentencia de eliminación:
collation
hint
findAndModify
fields
bypassDocumentValidation
collation
arrayFilters
hint
comment
let
count
hint
readConcern
collation
comment
distinct
readConcern
collation
comment
hint
getMore
comment
killCursors
(ninguno)
Transacciones y sesiones
Comando
Campos no compatibles
commitTransaction
comment
abortTransaction
comment
endSessions
(ninguno)
Administración
Comando
Campos no compatibles
Notas
listDatabases
authorizedDatabases
comment
filter debe estar vacío si se proporciona.
listCollections
comment
authorizedCollections debe ser falso si se proporciona.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Información o código de muestra incorrectos","incorrectInformationOrSampleCode","thumb-down"],["Faltan la información o los ejemplos que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-09-04 (UTC)"],[],[],null,["# Behavior differences\n====================\n\nThis page describes behavioral differences between Firestore with MongoDB compatibility and MongoDB.\n\nFor a breakdown of supported features depending on MongoDB version, see:\n\n- [Supported features: 8.0](/firestore/mongodb-compatibility/docs/supported-features-80)\n- [Supported features: 7.0](/firestore/mongodb-compatibility/docs/supported-features-70)\n- [Supported features: 6.0](/firestore/mongodb-compatibility/docs/supported-features-60)\n- [Supported features: 5.0](/firestore/mongodb-compatibility/docs/supported-features-50)\n\nConnections and databases\n-------------------------\n\n- Each connection is limited to a single Firestore with MongoDB compatibility database.\n- A database must be created before connecting to it.\n\nNaming\n------\n\nThe following differences apply to naming parts of your data model.\n\n### Collections\n\n- Collection names matching `__.*__` are not supported.\n\n### Fields\n\n- Field names matching `__.*__` are not supported.\n- Empty field names are not supported.\n\nDocuments\n---------\n\n- The maximum document size is 4 MiB.\n- The maximum nesting depth of fields is 20. Each Array and Object-typed field adds one level to the overall depth.\n\n### `_id`\n\n- Document `_id` (top-level field) must be an ObjectId, String, or 64-bit integer. Other BSON types are not supported.\n- Empty string (\"\") and 64-bit 0 (0L) are not supported.\n\nValues\n------\n\n- The JavaScript, Symbol, DBPointer, and Undefined BSON types are not supported.\n\n### Date\n\n- Date values must fall in `[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]`.\n\n### Decimal128\n\n- `NaN`, positive infinity, and negative infinity values are canonicalized on write.\n- Arithmetic operations on Decimal128 are not supported.\n\n### Double\n\n- `NaN` values are canonicalized on write.\n\n### Regular expression\n\n- Regular expression options must be valid (\"i\", \"m\", \"s\", \"u\", or \"x\") and provided in alphabetical order without repeats.\n\nQueries\n-------\n\n- Natural sort order (queries without an explicit sort) does not match insertion order or order by `_id` ascending.\n\nAggregations\n------------\n\n- Aggregations are limited to 250 stages.\n- The `$merge` and `$out` stages are not supported. See the [commands](#commands) section for a complete list of supported stages and operators.\n- The `$lookup` stage is limited to specifying a `foreignField` on `_id`.\n\nWrites\n------\n\n- Documents with names beginning with a dollar sign (\"$\") cannot be created using the upsert feature of `update` or `findAndModify`.\n- Make sure your connection string includes `retryWrites=false` (or use the method appropriate to your driver) to make sure the driver does not attempt to use this feature. Retryable writes are not supported.\n\nTransactions\n------------\n\n- Snapshot isolation and serializable transactions are\n supported.\n\n- By default, transactions use optimistic concurrency controls\n with snapshot isolation.\n\nRead concern\n------------\n\n- Firestore with MongoDB compatibility supports the `snapshot` , `majority`, and `linearizable`\n read concerns. The default is `snapshot` which refers to snapshot isolation.\n\n Use `linearizable` when the application requires strict consistency\n and must prevent write skew anomalies. For other workloads,\n `snapshot` can improve performance and reduce transaction contention.\n\nWrite concern\n-------------\n\n- Only `w: 'majority'` and `w: 1` write concerns are supported.\n\nRead preference\n---------------\n\n- Only the `primary`, `primaryPreferred`, `primary_preferred`, `secondary_preferred`, and `nearest` read concerns are supported.\n\nIndexes\n-------\n\n- Wildcard indexes are not supported.\n- Firestore with MongoDB compatibility does not automatically create an index on `_id`, but it ensures values of `_id` are unique within a collection.\n- Indexes without multi-key enabled are not automatically changed to [multi-key indexes](/firestore/mongodb-compatibility/docs/index-overview#multi-key_indexes_for_array_values) based on write operations. You must enable multi-key when you create the index and the option cannot be changed.\n\nErrors\n------\n\n- Error codes and messages may differ between Firestore with MongoDB compatibility and MongoDB.\n\nCommands\n--------\n\nThe following behavior differences apply to specific commands.\n\n- Commands not listed in the following tables are unsupported.\n- `maxTimeMS` is accepted by most commands but may be ignored.\n\n### Queries and writes\n\n### Transactions and sessions\n\n### Administration\n\nWhat's next\n-----------\n\n- Run the [Quickstart: Create a database and connect to it](/firestore/mongodb-compatibility/docs/create-and-query-database).\n- For a full list of supported features, see [Supported MongoDB data types, drivers, and features](/firestore/mongodb-compatibility/docs/supported-data-types-drivers)."]]