Cada conexão é limitada a um único banco de dados do Firestore com compatibilidade com o MongoDB.
É preciso criar um banco de dados antes de se conectar a ele.
Nomenclatura
As seguintes diferenças se aplicam à nomenclatura de partes do modelo de dados.
Coleções
Nomes de coleção que correspondem a __.*__ não são aceitos.
Campos
Nomes de campo que correspondem a __.*__ não são aceitos.
Não é possível usar nomes de campo vazios.
Documentos
O tamanho máximo do documento é 4 MiB.
A profundidade máxima de aninhamento de campos é 20. Cada campo do tipo matriz e objeto adiciona um nível à profundidade geral.
_id
O documento _id (campo de nível superior) precisa ser um ObjectId,
uma string ou um número inteiro de 64 bits. Outros tipos de BSON não são aceitos.
Strings vazias ("") e 0 de 64 bits (0L) não são compatíveis.
Valores
Os tipos JavaScript, Symbol, DBPointer e Undefined BSON não são compatíveis.
Data
Os valores de data precisam estar em [0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z].
Decimal128
NaN, infinito positivo e infinito negativo são canonicalizados na gravação.
Operações aritméticas em Decimal128 não são aceitas.
Duplo
Os valores NaN são canonizados na gravação.
Expressão regular
As opções de expressão regular precisam ser válidas ("i", "m", "s", "u" ou "x")
e fornecidas em ordem alfabética, sem repetições.
Consultas
A ordem de classificação natural (consultas sem uma classificação explícita)
não corresponde à ordem de inserção ou à ordem por _id crescente.
Agregações
As agregações são limitadas a 250 etapas.
As etapas $merge e $out não são compatíveis. Consulte a seção
comandos para ver uma lista completa de estágios e operadores compatíveis.
A etapa $lookup é limitada à especificação de um foreignField em _id.
Gravações
Não é possível criar documentos com nomes que começam com um cifrão ("$") usando o recurso de upsert do update ou do findAndModify.
Verifique se a string de conexão
inclui retryWrites=false ou use o método adequado ao seu driver
para garantir que ele não tente usar esse recurso.
Não é possível repetir gravações.
Transações
O isolamento de snapshot e as transações serializáveis são compatíveis.
Por padrão, as transações usam controles de simultaneidade otimista com isolamento de snapshot.
Ler preocupação
O Firestore com compatibilidade com o MongoDB oferece suporte aos níveis de consistência de leitura snapshot, majority e linearizable. O padrão é snapshot, que se refere ao isolamento de snapshot.
Use linearizable quando o aplicativo exigir consistência estrita
e precisar evitar anomalias de distorção de gravação. Para outras cargas de trabalho, snapshot pode melhorar o desempenho e reduzir a disputa de transações.
Nível de consistência de gravação
Somente w: 'majority' e w: 1 são compatíveis.
Preferência de leitura
Somente as consistências de leitura primary, primaryPreferred, primary_preferred, secondary_preferred e nearest são compatíveis.
Índices
Não há suporte para índices com caracteres curinga.
O Firestore com compatibilidade com o MongoDB não cria automaticamente um
índice em _id, mas garante que os valores de _id sejam exclusivos em uma
coleção.
Os índices sem várias chaves ativadas não são mudados automaticamente para índices de várias chaves com base em operações de gravação. Você precisa ativar a opção de várias chaves ao criar o índice, e ela não pode ser alterada.
Erros
Os códigos e mensagens de erro podem ser diferentes entre o Firestore com compatibilidade com o MongoDB e o MongoDB.
Comandos
As seguintes diferenças de comportamento se aplicam a comandos específicos.
Os comandos não listados nas tabelas a seguir não são compatíveis.
maxTimeMS é aceito pela maioria dos comandos, mas pode ser ignorado.
Consultas e gravações
Comando
Campos sem suporte
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
Em uma instrução de exclusão:
collation
hint
findAndModify
fields
bypassDocumentValidation
collation
arrayFilters
hint
comment
let
count
hint
readConcern
collation
comment
distinct
readConcern
collation
comment
hint
getMore
comment
killCursors
(nenhum)
Transações e sessões
Comando
Campos sem suporte
commitTransaction
comment
abortTransaction
comment
endSessions
(nenhum)
Administração
Comando
Campos sem suporte
Observações
listDatabases
authorizedDatabases
comment
filter precisa estar vazio, se fornecido.
listCollections
comment
authorizedCollections precisa ser "false", se fornecido.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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)."]]