Overview
En esta página, encontrará una lista de las funciones que Django MongoDB Backend no admite. También encontrará las funciones planificadas para las versiones de disponibilidad general (GA) y posteriores. Priorizaremos estas próximas funciones según la demanda de los usuarios, y puede solicitar soporte para una función por creando un problema de JIRA.
Limitaciones de funciones
En esta sección, puede obtener información sobre los siguientes tipos de características no compatibles de Django y MongoDB:
Gestión de transacciones
La ejecución de consultas utiliza el comportamiento predeterminado de Django y MongoDB, el modo de confirmación automática. Cada consulta se confirma inmediatamente en la base de datos.
Las API de gestión de transacciones de Django no están soportadas.
Limitaciones del modelo
Django no admite el patrón polimórfico de MongoDB, donde modelos ligeramente diferentes comparten la misma colección.
Indexes
Django MongoDB Backend no admite las siguientes funcionalidades de índice:
Creando
$vectorSearchy$searchíndices a través de la API de índices de DjangoCreación de índices geoespaciales a través de la API de índices de Django
Actualización de índices en
EmbeddedModelFieldsdespués de la creación del modelo
Campos
Django MongoDB Backend presenta las siguientes limitaciones para los tipos de campos especificados:
ArrayFieldArrayFieldel polimorfismo no es compatible.No se admiten valores anidados de
EmbeddedModelFielddentro de unArrayField.
EmbeddedModelFieldEmbeddedModelLos cambios de esquema no se registran después de la creación.Los documentos incrustados no pueden aceptar claves externas de Django.
No se admiten campos de modelo incrustados arbitrarios o sin tipo. Debe derivar todos los campos de una clase
EmbeddedModel.
JSONFieldEl backend de Django MongoDB no puede distinguir entre un valor JSON y un valor SQL
null. Las consultas que usan la búsquedaValue(None, JSONField())oisnulldevuelven valores JSON y SQLnull.Algunas consultas con objetos
Q, comoQ(value__foo="bar"), podrían no funcionar como se espera.El filtrado de valores
Nonedevuelve incorrectamente objetos en los que no existe un campo.
DateTimeFieldLa granularidad en microsegundos para valores
DateTimeFieldno está soportada.
DurationFieldDurationFieldalmacena milisegundos en lugar de microsegundos.
ForeignKeySiempre que sea posible, utilice un campo
EmbeddedModelFielden lugar de unoForeignKeypara evitar$lookupoperaciones. Un campoEmbeddedModelFieldemula un documento incrustado de MongoDB y ofrece un mejor rendimiento que unForeignKeycampo. Para obtener más información sobre cómo reducir las$lookupoperaciones, consulte la guía "Reducir operaciones $lookup" en la documentación de Atlas.El rendimiento de CASCADE eliminaen un
ForeignKeycampo no es tan eficiente como usarEmbeddedModelFieldun.
Los siguientes tipos de campos no están disponibles en Django MongoDB Backend:
GeneratedFieldAutoField(incluidosBigAutoFieldySmallAutoField)
Limitaciones de las consultas
Django MongoDB Backend no admite los siguientes métodos de API QuerySet:
difference()extra()intersection()prefetch_related()raw()select_for_update()
Django MongoDB Backend no admite consultas QuerySet.delete() y update() que abarquen múltiples colecciones.
Query geoespacial
Django MongoDB Backend no admite las siguientes funciones de consulta geoespacial:
GeoDjangoOperadores de búsqueda de Django para consultas geoespaciales específicas de MongoDB
Operadores de agregación
Django MongoDB Backend no incluye ninguna búsqueda de campo personalizada de Django para el marco de agregación de MongoDB. En lugar de ello, utiliza el método raw_aggregate(). Consulta la guía Realizar queries sin procesar en bases de datos.
Funciones de base de datos
Django MongoDB Backend no admite las siguientes funciones de base de datos:
Comandos de administración no admitidos
Los siguientes comandos django-admin no son compatibles:
createcachetable(ver Almacenamiento en caché)inspectdb
Limitaciones de la migración
Django MongoDB Backend no admite las siguientes funciones de migración:
Validación de esquema forzada. Para saber cómo forzar la validación de esquema en su aplicación, consulte la guía "Especificar la validación de esquema JSON" en el manual de MongoDB Server.
La opción
migrate --fake-initial.
Almacenamiento en caché
El almacenamiento en caché de la base de datos utiliza el comando createcachecollection de Django MongoDB Backend en lugar del comando createcachetable específico de SQL de Django.
En segundo lugar, debes utilizar el backend django_mongodb_backend.cache.MongoDBCache en lugar del backend de caché de base de datos integrado de Django, django.core.cache.backends.db.DatabaseCache.
Rendimiento
El equipo de ingeniería está priorizando el desarrollo de funciones para la versión preliminar pública de Django MongoDB Backend. Por ello, es posible que observe limitaciones de rendimiento con ciertas cargas de trabajo. Si encuentra algún problema de rendimiento, infórmelo como se indica en la guía de Problemas y Ayuda.
Características de la versión de disponibilidad general
En esta sección puedes aprender sobre los siguientes tipos de funcionalidades de Django y MongoDB que probablemente se introducirán en lanzamientos de Django MongoDB backend en GA y posteriores a GA:
Características de MongoDB
Planeamos admitir las siguientes características de MongoDB en la versión GA:
Gestión programática de búsqueda vectorial, búsqueda en Atlas e índices geoespaciales mediante la API de Django
Búsqueda vectorial, búsqueda en Atlas y consultas geoespaciales mediante la API de Django
Cifrado consultable y cifrado a nivel de campo del lado del cliente
Transacciones de base de datos
Planeamos soportar las siguientes funcionalidades de MongoDB en futuras versiones de publicación GA:
GridFS para almacenamiento de archivos grandes
Flujos de cambios para la monitorización de datos
Validación de esquema
Tip
Para obtener más información sobre las características de MongoDB mencionadas en esta sección, consulte los siguientes recursos:
Atlas Vector Search en la documentación de Atlas
Búsqueda en la documentación del Atlas
Consultas geoespaciales en el manual del servidor MongoDB
Cifrado en uso en el manual del servidor MongoDB
Transacciones en el manual del servidor MongoDB
GridFS en el manual del servidor MongoDB
Flujos de cambios en el manual del servidor MongoDB
Características del modelo
Planeamos admitir las siguientes características del modelo en la versión GA:
Matrices de documentos incrustados
Documentos y matrices incrustados polimórficos
Aplicación de cambios en el esquema del modelo integrado a los valores
EmbeddedModelFieldMúltiples modelos dentro de una colección
Representación de formularios mejorada en modelos integrados
En un futuro lanzamiento posterior a la GA, planeamos agregar un campo de modelo personalizado para el tipo de datos BSONRegExp.
Funciones del comando de gestión
El soporte de serialización para EmbeddedModelField (es decir, los comandos de administración dumpdata y loaddata de Django) se agregará en la versión GA.
Bibliotecas de terceros
Planeamos probar la compatibilidad con las siguientes librerías de terceros antes del lanzamiento GA: