Diferenças de comportamento
Nesta página, descrevemos as diferenças comportamentais entre o Firestore com compatibilidade com o MongoDB e o MongoDB.Para conferir uma lista dos recursos compatíveis com cada 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.
- Um banco de dados precisa ser criado antes de se conectar a ele.
Nomenclatura
As diferenças a seguir se aplicam a partes de nomenclatura do modelo de dados.
Coleções
- Não é possível usar nomes de coleções que correspondam a
__.*__
.
Campos
- Não é possível usar nomes de campo correspondentes a
__.*__
. - 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
_id
do documento (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 compatíveis. - Não há suporte para string vazia ("") e 0 de 64 bits (0L).
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
- 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 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
em ordem crescente.
Agregações
- As agregações são limitadas a 250 etapas.
- As fases
$merge
e$out
não são compatíveis. Consulte a seção comandos para conferir uma lista completa de estágios e operadores com suporte.
Gravações
- Não é possível criar documentos com nomes que começam com um cifrão ("$") usando o recurso de inserção e atualização de
update
oufindAndModify
. - Verifique se a string de conexão
inclui
retryWrites=false
(ou use o método apropriado para o driver) para garantir que o driver não tente usar esse recurso. Não há suporte para gravações revogáveis.
Transações
- As transações de snapshot não são compatíveis.
- As transações usam controles de simultaneidade pessimistas com bloqueio. Para evitar a contenção de bloqueio, limite a quantidade de dados lidos em uma transação.
Índices
- Índices de caracteres curinga não são aceitos.
- Não é possível usar índices exclusivos
- O Firestore com compatibilidade do 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 chaves múltiplas ativadas não são alterados automaticamente para índices de chaves múltiplas com base nas operações de gravação. É necessário ativar a chave múltipla ao criar o índice, e a opção não pode ser alterada.
Ler preocupação
- Somente o nível de preocupação de leitura
majority
é aceito.
Gravar preocupação
- Somente as preocupações de gravação
w: 'majority'
ew: 1
são aceitas.
Preferência de leitura
- Somente as questões de leitura
primary
,primaryPreferred
,primary_preferred
,secondary_preferred
enearest
são compatíveis.
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 diferenças de comportamento a seguir 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 falso se fornecido. |
|
|
|
|
|
Esse comando não faz nada.capped precisa ser falso 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 compatíveis com o MongoDB.