Diferenças de comportamento
Esta página descreve as diferenças comportamentais entre o Firestore com compatibilidade com o MongoDB e o MongoDB.
Para uma análise detalhada das funcionalidades suportadas consoante a versão do MongoDB, consulte:
- Funcionalidades suportadas: 8.0
 - Funcionalidades suportadas: 7.0
 - Funcionalidades suportadas: 6.0
 - Funcionalidades suportadas: 5.0
 
Associações e bases de dados
- Cada associação está limitada a uma única base de dados do Firestore com compatibilidade com o MongoDB.
 - Tem de criar uma base de dados antes de estabelecer ligação à mesma.
 
Atribuição de nomes
As seguintes diferenças aplicam-se à atribuição de nomes a partes do seu modelo de dados.
Coleções
- Não são suportados nomes de coleções que correspondam a 
__.*__. 
Campos
- Os nomes dos campos que correspondem a 
__.*__não são suportados. - Os nomes de campos vazios não são suportados.
 
Documentos
- O tamanho máximo do documento é de 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) tem de ser um ObjectId, uma string ou um número inteiro de 64 bits. Outros tipos de BSON não são suportados. - A string vazia ("") e o 0 de 64 bits (0L) não são suportados.
 
Valores
- Os tipos JavaScript, Symbol, DBPointer e Undefined BSON não são suportados.
 
Data
- Os valores de data têm de estar compreendidos entre 
[0001-01-01T00:00:00Z, 9999-12-31T23:59:59Z]. 
Decimal128
- Os valores 
NaN, infinito positivo e infinito negativo são canonizados na gravação. - As operações aritméticas em Decimal128 não são suportadas.
 
Duplo
- Os valores 
NaNsão canonizados na gravação. 
Expressão regular
- As opções de expressões regulares têm de ser válidas ("i", "m", "s", "u" ou "x") e fornecidas por ordem alfabética sem repetições.
 
Consultas
- A ordem de ordenação natural (consultas sem uma ordenação explícita) não corresponde à ordem de inserção nem à ordenação por 
_idascendente. 
Agregações
- As agregações estão limitadas a 250 fases.
 - As fases 
$mergee$outnão são suportadas. Consulte a secção Comandos para ver uma lista completa de fases e operadores suportados. - A fase 
$lookupnão suporta os camposletepipeline. 
Escreve
- Não é possível criar documentos com nomes que comecem por um cifrão ("$") através da funcionalidade de inserção/atualização de 
updateoufindAndModify. - Certifique-se de que a string de ligação
inclui 
retryWrites=false(ou use o método adequado ao seu controlador) para se certificar de que o controlador não tenta usar esta funcionalidade. As escritas repetíveis não são suportadas. 
Transações
O isolamento de instantâneo e as transações serializáveis são compatíveis.
Por predefinição, as transações usam controlos de simultaneidade otimistas com isolamento de instantâneos.
Ler preocupação
O Firestore com compatibilidade com o MongoDB suporta as preocupações de leitura
snapshot,majorityelinearizable. A predefinição ésnapshot, que se refere ao isolamento de instantâneo.Use
linearizablequando a aplicação requer uma consistência rigorosa e tem de impedir anomalias de desvio de escrita. Para outras cargas de trabalho, osnapshotpode melhorar o desempenho e reduzir a contenção de transações.
Escrever preocupação
- Apenas são suportados os write concerns 
w: 'majority'ew: 1. 
Preferência de leitura
- Apenas são suportadas as preocupações de leitura 
primary,primaryPreferred,primary_preferred,secondary_preferredenearest. 
Índices
- Os índices com carateres universais não são suportados.
 - O Firestore com compatibilidade com o MongoDB não cria automaticamente um índice em 
_id, mas garante que os valores de_idsão únicos numa coleção. - Os índices sem várias chaves ativadas não são alterados automaticamente para índices de várias chaves com base nas operações de escrita. Tem de ativar a opção de várias teclas quando criar o índice, e não é possível alterar a opção.
 
Erros
- Os códigos e as mensagens de erro podem ser diferentes entre o Firestore com compatibilidade com o MongoDB e o MongoDB.
 
Comandos
As seguintes diferenças de comportamento aplicam-se a comandos específicos.
- Os comandos não listados nas tabelas seguintes não são suportados.
 maxTimeMSé aceite pela maioria dos comandos, mas pode ser ignorado.
Consultas e escritas
| Command | Campos não suportados | 
|---|---|
  | 
      
 
 
 
 
 
 
 
 
 
 
 
 
 
  | 
    
  | 
      
 
 
 
 
 
  | 
    
  | 
      
 
  | 
    
  | 
      
 
 
  | 
    
  | 
      
 
 Numa declaração de eliminação: 
 
  | 
    
  | 
      
 
 
 
 
 
 
  | 
    
  | 
      
 
 
 
  | 
    
  | 
      
 
 
 
  | 
    
  | 
      
  | 
    
  | 
      (nenhum)  | 
    
Transações e sessões
| Command | Campos não suportados | 
|---|---|
  | 
      
  | 
    
  | 
      
  | 
    
  | 
      (nenhum)  | 
    
Administração
| Command | Campos não suportados | Notes | 
|---|---|---|
  | 
      
 
  | 
      O elemento filter tem de estar vazio, se for fornecido. | 
    
  | 
      
  | 
      authorizedCollections tem de ser falso se for fornecido. | 
    
  | 
      
  | 
      |
  | 
      
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  | 
      Este comando não tem efeito.capped tem de ser falso se for fornecido. | 
    
O que se segue?
- Execute o Início rápido: crie uma base de dados e ligue-se a ela.
 - Para ver uma lista completa das funcionalidades suportadas, consulte o artigo Tipos de dados, controladores e funcionalidades do MongoDB suportados.