Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Menu Docs
Página inicial do Docs
/ / /
Backend do Django MongoDB

Limitações e próximos recursos

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.

Nesta seção, você pode aprender sobre os seguintes tipos de recursos do Django e MongoDB não suportados:

  • Gerenciamento de transações

  • Limitações do modelo

  • Limitações de query

  • Comandos de gerenciamento não suportados

  • Limitações de migração

  • Cache

  • Desempenho

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.

O Django não suporta o padrão polimórfico do MongoDB, em que modelos ligeiramente diferentes compartilham a mesma collection.

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 Django

  • Criaçã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

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 um ArrayField 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 usam Value(None, JSONField()) ou a pesquisa isnull retornam valores JSON e SQL null.

    • Algumas queries com objetos Q, como Q(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 campo ForeignKey para evitar o uso de operações $lookup. Um EmbeddedModelField emula um documento incorporado do MongoDB e tem melhor desempenho do que um campo ForeignKey . 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 usar EmbeddedModelField um.

Os seguintes tipos de campo não estão disponíveis no Django MongoDB Backend:

  • GeneratedField

  • AutoField (incluindo BigAutoField e SmallAutoField)

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.

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

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.

O Django MongoDB Backend não suporta as seguintes funções de banco de dados :

  • Chr

  • ExtractQuarter

  • MD5

  • Now

  • Ord

  • Pad

  • Repeat

  • Reverse

  • Right

  • SHA1, SHA224, SHA256, SHA384, SHA512

  • Sign

  • The tzinfo parameter of the TruncDate and TruncTime database functions isn't supported.

Os seguintes comandos do django-admin não são suportados:

  • createcachetable (consulte Cache)

  • inspectdb

O Django MongoDB Backend não suporta as seguintes funcionalidades de migração:

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.

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.

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:

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:

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.

Suporte de serialização para EmbeddedModelField (ou seja, comandos de gerenciamento dumpdata e loaddata do Django) serão adicionados pela versão GA.

Planejamos testar a compatibilidade com as seguintes bibliotecas de terceiros até a versão GA:

Voltar

Transações

Nesta página