Diferenças de comportamento
Nesta página, descrevemos as diferenças de comportamento entre o Firestore com compatibilidade com o MongoDB e o MongoDB.
Para ver uma análise detalhada dos recursos compatíveis dependendo da versão do MongoDB, consulte:
- Recursos compatíveis: 8.0
 - Recursos compatíveis: 7.0
 - Recursos compatíveis: 6.0
 - Recursos compatíveis: 5.0
 
Conexões e bancos de dados
- 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 
NaNsã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 
_idcrescente. 
Agregações
- As agregações são limitadas a 250 etapas.
 - As etapas 
$mergee$outnão são compatíveis. Consulte a seção comandos para ver uma lista completa de estágios e operadores compatíveis. - A etapa 
$lookupnão é compatível com os camposletepipeline. 
Gravações
- Não é possível criar documentos com nomes que começam com um cifrão ("$") usando o recurso de upsert do 
updateou dofindAndModify. - Verifique se a string de conexão
inclui 
retryWrites=falseou 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 otimistas 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,majorityelinearizable. O padrão ésnapshot, que se refere ao isolamento de snapshot.Use
linearizablequando o aplicativo exigir consistência estrita e precisar evitar anomalias de distorção de gravação. Para outras cargas de trabalho,snapshotpode melhorar o desempenho e reduzir a disputa de transações.
Nível de consistência de gravação
- Somente 
w: 'majority'ew: 1são compatíveis. 
Preferência de leitura
- Somente as consistências de leitura 
primary,primaryPreferred,primary_preferred,secondary_preferredenearestsã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_idsejam 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 | 
|---|---|
  | 
      
 
 
 
 
 
 
 
 
 
 
 
 
 
  | 
    
  | 
      
 
 
 
 
 
  | 
    
  | 
      
 
  | 
    
  | 
      
 
 
  | 
    
  | 
      
 
 Em uma instrução de exclusão: 
 
  | 
    
  | 
      
 
 
 
 
 
 
  | 
    
  | 
      
 
 
 
  | 
    
  | 
      
 
 
 
  | 
    
  | 
      
  | 
    
  | 
      (nenhum)  | 
    
Transações e sessões
| Comando | Campos sem suporte | 
|---|---|
  | 
      
  | 
    
  | 
      
  | 
    
  | 
      (nenhum)  | 
    
Administração
| Comando | Campos sem suporte | Observações | 
|---|---|---|
  | 
      
 
  | 
      filter precisa estar vazio, se fornecido. | 
    
  | 
      
  | 
      authorizedCollections precisa ser "false", se fornecido. | 
    
  | 
      
  | 
      |
  | 
      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | 
      Esse comando não faz nada.capped precisa ser "false", se fornecido. | 
    
A seguir
- Execute o Guia de início rápido: criar e se conectar a um banco de dados.
 - Para uma lista completa dos recursos compatíveis, consulte Tipos de dados, drivers e recursos do MongoDB com suporte.