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
$vectorSearche$searchpor meio da API de índices do DjangoCriação de índices geoespaciais por meio da API de índices do Django
Atualização de índices no
EmbeddedModelFieldsapós a criação do modelo
Campos
O Django MongoDB Backend tem as seguintes limitações nos tipos de campo especificados:
ArrayFieldArrayFieldo polimorfismo não é suportado.Valores
EmbeddedModelFieldaninhados dentro de umArrayFieldnão são suportados.
EmbeddedModelFieldEmbeddedModelas 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.
JSONFieldO 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 pesquisaisnullretornam valores JSON e SQLnull.Algumas queries com objetos
Q, comoQ(value__foo="bar"), podem não funcionar como esperado.A filtragem para valores
Noneretorna incorretamente objetos nos quais um campo não existe.
DateTimeFieldA granularidade de microssegundos para valores
DateTimeFieldnão é suportada.
DurationFieldDurationFieldarmazena milissegundos em vez de microssegundos.
ForeignKeyQuando possível, você deve usar um campo
EmbeddedModelFieldem vez de um campoForeignKeypara evitar o uso de operações$lookup. UmEmbeddedModelFieldemula um documento incorporado do MongoDB e tem melhor desempenho do que um campoForeignKey. Para saber mais sobre como reduzir as operações$lookupde, consulte o guia Reduzir operações de $lookup na documentação do Atlas .O desempenho de exclusões CASCADE em um campo
ForeignKeynão é tão eficiente quanto usar umEmbeddedModelField.
Os seguintes tipos de campo não estão disponíveis no Django MongoDB Backend:
GeneratedFieldAutoField(incluindoBigAutoFieldeSmallAutoField)
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:
GeoDjangoOperadores 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
EmbeddedModelFieldVá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: