Visão geral
Nesta página, você pode encontrar uma lista de recursos que o Django MongoDB Backend não suporta. Você também pode encontrar recursos atualmente planejados para as versões de disponibilidade geral (GA) e pós-GA. Priorizaremos esses recursos futuros com base na demanda do usuário, e você pode solicitar suporte para um recurso criando um problema do JIRA.
Limitações de Funcionalidades
Nesta seção, você pode aprender sobre os seguintes tipos de recursos do Django e MongoDB não suportados:
Gerenciamento de transações
A execução da query usa o comportamento padrão do Django e do MongoDB do modo de confirmação automática. Cada query é imediatamente confirmada no banco de dados.
As APIs de gerenciamento de transações do Django não são suportadas.
Limitações do modelo
O Django não suporta o padrão polimórfico do MongoDB, em que modelos ligeiramente diferentes compartilham a mesma collection.
Indexes
O Django MongoDB Backend não suporta as seguintes funcionalidades de índice:
Criação de índices
$vectorSearch
e$search
por meio da API de índices do DjangoCriação de índices geoespaciais por meio da API de índices do Django
Atualização de índices no
EmbeddedModelFields
após a criação do modelo
Campos
O Django MongoDB Backend tem as seguintes limitações nos tipos de campo especificados:
ArrayField
ArrayField
o polimorfismo não é suportado.Valores
EmbeddedModelField
aninhados dentro de umArrayField
não são suportados.
EmbeddedModelField
EmbeddedModel
as alterações de esquema não são registradas após a criação.Documentos incorporados não podem receber chaves estrangeiras do Django.
Campos de modelo incorporado arbitrários ou não especificados não são suportados. Você deve derivar todos os campos de uma classe
EmbeddedModel
.
JSONField
O Backend do MongoDB Django não consegue distinguir entre um valor JSON e um valor SQL
null
. As queries que usamValue(None, JSONField())
ou a pesquisaisnull
retornam valores JSON e SQLnull
.Algumas queries com objetos
Q
, comoQ(value__foo="bar")
, podem não funcionar como esperado.A filtragem para valores
None
retorna incorretamente objetos nos quais um campo não existe.
DateTimeField
A granularidade de microssegundos para valores
DateTimeField
não é suportada.
DurationField
DurationField
armazena milissegundos em vez de microssegundos.
ForeignKey
Quando possível, você deve usar um campo
EmbeddedModelField
em vez de um campoForeignKey
para evitar o uso de operações$lookup
. UmEmbeddedModelField
emula um documento incorporado do MongoDB e tem melhor desempenho do que um campoForeignKey
. Para saber mais sobre como reduzir as operações$lookup
de, consulte o guia Reduzir operações de $lookup na documentação do Atlas .O desempenho das exclusões CASCIDE em um
ForeignKey
campo não é tão eficiente quanto usarEmbeddedModelField
um.
Os seguintes tipos de campo não estão disponíveis no Django MongoDB Backend:
GeneratedField
AutoField
(incluindoBigAutoField
eSmallAutoField
)
Limitações de query
O backend do Django MongoDB não suporta os seguintes métodos da API do QuerySet
:
prefetch_related()
extra()
O Django MongoDB Backend não suporta queries QuerySet.delete()
e update()
que abrangem várias collections.
Consultas geoespaciais
O Backend do Django MongoDB não suporta as seguintes funcionalidades de consulta geoespacial:
GeoDjango
Operadores de pesquisa Django para queries geoespaciais específicas do MongoDB
Operadores de agregação
O Django MongoDB Backend não inclui nenhuma pesquisa de campo personalizada do Django para a estrutura de agregação do MongoDB . Em vez disso, use o método raw_aggregate()
. Consulte o guia Executar queries de banco de dados brutos.
Funções de banco de dados
O Django MongoDB Backend não suporta as seguintes funções de banco de dados :
Comandos de gerenciamento não suportados
Os seguintes comandos do django-admin
não são suportados:
createcachetable
(consulte Cache)inspectdb
Limitações de migração
O Django MongoDB Backend não suporta as seguintes funcionalidades de migração:
validação de esquema. Para saber como impor a validação de esquema em seu aplicação, consulte o guia Especificar validação de JSON schema no manual do MongoDB Server.
A opção
migrate --fake-initial
.
Cache
O cache do banco de dados usa o comando createcachecollection
do Django MongoDB Backend em vez do comando createcachetable
específico do SQL do Django.
Em segundo lugar, você deve usar o backend django_mongodb_backend.cache.MongoDBCache
em vez do backend de cache do banco de dados integrado do Django, django.core.cache.backends.db.DatabaseCache
.
Desempenho
A equipe de engenharia está priorizando o desenvolvimento de recursos para a versão Public Preview do Django MongoDB Backend. Por isso, você pode notar limitações de desempenho com determinados volumes de trabalho. Se você encontrar algum problema de desempenho, informe-o conforme mostrado no guia Problemas e ajuda.
Recursos gerais de versão
Nesta seção, você aprenderá sobre os seguintes tipos de recursos do Django e do MongoDB que as versões GA e pós-GA do Django MongoDB Backend provavelmente introduzirão:
Funcionalidades do MongoDB
Planejamos oferecer suporte aos seguintes recursos do MongoDB na versão GA:
Gerenciamento programático do Vector Search, do Atlas Search e dos índices geoespaciais usando a API do Django
Vector Search, Atlas Search e queries geoespaciais usando a API do Django
Queryable Encryption e criptografia no nível do campo do lado do cliente
Transações de banco de dados
Planejamos oferecer suporte aos seguintes recursos do MongoDB em futuras versões pós-GA:
GridFS para armazenamento de arquivos grandes
Alterar streams para monitoramento de dados
Validação de esquema
Dica
Para saber mais sobre os recursos do MongoDB mencionados nesta seção, consulte os seguintes recursos:
Atlas Vector Search na documentação do Atlas
Atlas Search na documentação do Atlas
Queries geoespaciais no manual do MongoDB Server
criptografia em execução no manual do MongoDB Server
Transações no manual do MongoDB Server
GridFS no manual do MongoDB Server
Change Streams no manual do MongoDB Server
Recursos do modelo
Planejamos oferecer suporte aos seguintes recursos de modelo na versão GA:
arrays de documentos incorporados
Documentos e arrays incorporados polimórficos
Aplicação de alterações no esquema do modelo incorporado para valores
EmbeddedModelField
Vários modelos em uma coleção
Representação aprimorada de formulários em modelos incorporados
Em uma futura versão pós-GA, planejamos adicionar um campo de modelo personalizado para o tipo de dados BSONRegExp
.
Recursos de comando de gerenciamento
Suporte de serialização para EmbeddedModelField
(ou seja, comandos de gerenciamento dumpdata
e loaddata
do Django) serão adicionados pela versão GA.
Bibliotecas de terceiros
Planejamos testar a compatibilidade com as seguintes bibliotecas de terceiros até a versão GA: