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
NaN
sã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
_id
ascendente.
Agregações
- As agregações estão limitadas a 250 fases.
- As fases
$merge
e$out
não são suportadas. Consulte a secção Comandos para ver uma lista completa de fases e operadores suportados. - A fase
$lookup
não suporta os camposlet
epipeline
.
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
update
oufindAndModify
. - 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
,majority
elinearizable
. A predefinição ésnapshot
, que se refere ao isolamento de instantâneo.Use
linearizable
quando a aplicação requer uma consistência rigorosa e tem de impedir anomalias de desvio de escrita. Para outras cargas de trabalho, osnapshot
pode 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_preferred
enearest
.
Í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_id
sã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.