Menu Docs

Limitações

Nesta página, você pode encontrar uma lista de recursos que o Django MongoDB Backend não suporta. Como o Django MongoDB Backend está em desenvolvimento ativo, alguns recursos listados nesta página podem ser considerados para versões futuras com base na demanda do usuário. Você pode solicitar suporte para um recurso deixando uma sugestão no Fórum de Feedback do Drivers do.

As seguintes variáveis de banco de dados não são suportadas pelo Django MongoDB Backend:

  • ATOMIC_REQUESTS

  • AUTOCOMMIT

  • CONN_HEALTH_CHECKS

  • TIME_ZONE

As seguintes limitações se aplicam aos modelos no Django MongoDB Backend:

  • O Django MongoDB Backend impõe um mapeamento individual entre um modelo Django e uma coleção MongoDB . Por isso, vários modelos não podem compartilhar a mesma coleção.

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

Para saber como executar operações de banco de dados não suportadas operando diretamente em sua MongoClient instância, consulte Operações do MongoClient no guia Executar queries de banco de dados brutos.

O Django MongoDB Backend tem as seguintes limitações nos tipos de campo especificados:

  • ArrayField

    • O backend do Django MongoDB não suporta o polimorfismo ArrayField.

    • O Backend Django MongoDB não suporta o aninhamento de um EmbeddedModelField dentro de um ArrayField.

  • 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.

    • O Django MongoDB Backend não suporta campos de modelo incorporado arbitrários ou não digitados. 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

    • O Backend Django MongoDB não suporta granularidade de microssegundos para DateTimeField.

  • 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 do CASCIDE exclui 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

  • BigAutoField

  • SmallAutoField

O backend do Django MongoDB não suporta os seguintes métodos da API do QuerySet :

  • distinct()

  • dates()

  • datetimes()

  • prefetch_related()

  • extra()

O Django MongoDB Backend não suporta queries QuerySet.delete() e update() que abrangem várias collections.

  • O Backend Django MongoDB não suporta GeoDjango.

  • O Backend do MongoDB do Django não tem nenhum operador de pesquisa do Django para queries geoespaciais específicas do MongoDB.

O Django MongoDB Backend não contém nenhuma pesquisa de campo personalizada do Django para a estrutura de agregação do MongoDB . Em vez disso, use o método raw_aggregate(). Para obter mais informações sobre o raw_aggregate() método, 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

O parâmetro tzinfo das funções de banco de dados Trunc não funciona corretamente porque o MongoDB converte o resultado de volta para UTC.

O Backend do Django MongoDB não suporta os seguintes comandos de gerenciamento do Django:

  • createcachetable

  • inspectdb

  • optimizemigration

  • sqlflush

  • sqlsequencereset

  • O Django MongoDB Backend não suporta validação de esquema. Para saber como impor a validação de esquema em seu aplicação, consulte o guia Especificar validação do JSON schema no manual do MongoDB Server .

  • O Django MongoDB Backend não suporta transações DDL.

  • O Backend Django MongoDB não suporta o comando migrate --fake-initial.

O Django MongoDB Backend não foi testado para suporte à funcionalidade assíncrona da API do Django.

O Django MongoDB Backend não tem uma classe Field personalizada para o tipo de dados BSONRegExp. Em vez disso, use a classe CharField.

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. Você também pode compartilhar seus comentários no Fórum de Feedback do Driver.