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 Array e Object adiciona um nível à profundidade geral.
_id
- O campo
_idde nível superior tem de ser um ObjectId, uma string, um número inteiro de 64 bits, um número inteiro de 32 bits, um número de vírgula flutuante de precisão dupla, um binário ou um objeto. Outros tipos de BSON 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 canonicalizados na gravação.
Expressão regular
- As opções de expressão regular 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 com 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 cria o índice, e não é possível alterá-la.
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 estabeleça ligação à mesma.
- Para ver uma lista completa das funcionalidades suportadas, consulte o artigo Tipos de dados, controladores e funcionalidades do MongoDB suportados.