Limitações
Nesta página
Visão geral
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.
Variáveis do banco de dados não suportadas
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
Limitações do modelo
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.
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
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.
Campos
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 umArrayField
.
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 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
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 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 do CASCIDE exclui 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
BigAutoField
SmallAutoField
Limitações de query
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.
Consultas geoespaciais
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.
Operadores de agregação
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.
Funções de banco de dados
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.
Limitações de comando de gerenciamento Django
O Backend do Django MongoDB não suporta os seguintes comandos de gerenciamento do Django:
createcachetable
inspectdb
optimizemigration
sqlflush
sqlsequencereset
Limitações de migração
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
.
Suporte assíncrono
O Django MongoDB Backend não foi testado para suporte à funcionalidade assíncrona da API do Django.
Tipos de dados
O Django MongoDB Backend não tem uma classe Field
personalizada para o tipo de dados BSONRegExp
. Em vez disso, use a classe CharField
.
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. Você também pode compartilhar seus comentários no Fórum de Feedback do Driver.