Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Compatibilidad de funcionalidades de Django y MongoDB

En esta página, puedes encontrar información sobre las funcionalidades soportadas y no soportadas en Django MongoDB Backend. También puedes encontrar funcionalidades actualmente planificadas para futuras versiones. Priorizaremos estas nuevas funcionalidades según la demanda de los usuarios y puedes solicitar soporte para una funcionalidad creando un problema en JIRA.

Django MongoDB backend permite las siguientes operaciones, pero pueden ser menos eficientes:

Operación
Notas de rendimiento

$expr Operaciones

Queries that use the $expr operator might run slowly, since this operator often cannot predict which index to use and performs a collection scan. Some QuerySet operations, such as queries that specify an in lookup, use $expr to evaluate the query results and experience degraded performance.
We plan to address this performance issue in a post-GA release.

$lookup Operaciones

Queries that use the $lookup operator might run slowly. To improve performance, we recommend that you use embedded models instead of the $lookup operator when possible. To learn more about how to reduce $lookup operations, see the Reduce $lookup Operations guide in the MongoDB Atlas documentation.

Esta sección indica si Django MongoDB Backend admite diversas funcionalidades de MongoDB.

Funcionalidad de MongoDB
Soporte actual

índice de búsqueda

Parcialmente compatible. Los siguientes campos de definición de índice avanzado no son compatibles:

  • numPartitions

  • analyzers

  • storedSource

  • synonyms

  • typeSets

MongoDB no admite los índices de búsqueda en algunos tipos de datos. Para ver una lista de los tipos no admitidos, consulta Limitaciones de tipo de datos en la documentación de MongoDB Atlas.

Índices de búsqueda vectorial

Soporte parcial. Puede usar Django MongoDB Backend para crear índices básicos de Búsqueda Vectorial que especifiquen un nombre de índice, los campos a indexar y una función de similitud. Todos los demás campos de definición de índice no están soportados.

Índices compuestos

Índices de documentos incrustados

Índices geoespaciales

Multikey indexes

Índices parciales

Índices de un solo campo

Unique indexes

Actualización de los índices del modelo integrado después de la creación del modelo

No admitido.

EmbeddedModelArrayField indexes

PolymorphicEmbeddedModelField y PolymorphicEmbeddedModelArrayField índices

El backend de Django MongoDB actualmente admite todos los tipos de datos de MongoDB que no están incluidos en la siguiente tabla. Para ver una lista completa de los tipos compatibles, consulta la sección MongoDB BSON Fields de la guía Create Models to Represent Collections.

Tipo de dato BSON
Soporte actual

Object

You can use embedded models and polymorphic embedded models to represent objects. If you are using the EmbeddedModelField field, the following limitations apply:
* Foreign key fields are not supported.
* Arbitrary or untyped embedded model fields are not supported. You must derive all fields from an EmbeddedModel class.
Funcionalidad de MongoDB
Soporte actual

Operaciones de agregación

Soportado parcialmente. El Backend de Django MongoDB no incluye búsquedas de campos personalizadas de Django para el framework de agregación de MongoDB, pero se puede utilizar el método raw_aggregate().

queries de MongoDB Search

Operaciones de borrar

Query geoespacial

You can use the following spatial lookups from the GIS QuerySet API:
* contains
* disjoint
* distance_gt
* distance_lte
* dwithin
* intersects
* within

For other geospatial queries, use the raw_aggregate() method.

Operaciones de inserción

Operaciones de lectura

Operaciones de actualizar

Los query de MongoDB Vector Search

Funcionalidad de MongoDB
Soporte actual

Soporte asincrónico

Autenticación

Almacenamiento de datos en caché

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

Flujos de cambio

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

Encriptación a nivel de campo

No admitido.

Interacción de la colección

Interacción con la base de datos

GridFS

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

Múltiples modelos para una colección

No admitido.

Queryable Encryption

Representando documentos

Use models to represent MongoDB documents.

Validación de esquema

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

Datos de Time Series

Transacciones

You can use Django MongoDB Backend's custom transactions API with the following limitations:
* QuerySet.union() is not supported within a transaction.
* Savepoints, or nested atomic blocks, are not supported. The outermost atomic block starts a transaction, and any subsequent atomic blocks have no effect.
* Your MongoDB deployment must be a replica set or sharded cluster.

Esta sección indica si el Backend MongoDB de Django es compatible con varias funcionalidades de Django.

El backend de Django MongoDB admite actualmente todos los campos de Django que no estén incluidos en la siguiente tabla. Para ver una lista completa de los campos compatibles, consulta la sección Campos de Django de la guía Crear Modelos.

Tipo de campo Django
Soporte actual

AutoField

No compatible. Los BigAutoField SmallAutoField tipos y tampoco son compatibles. En su lugar,ObjectIdField utilice.

CompositePrimaryKey

No admitido.

DateTimeField

Microsecond granularity for DateTimeField values is not supported.

DurationField

DurationField stores milliseconds rather than microseconds.

ForeignKey

Soportado parcialmente. Se puede utilizar este tipo de campo con las siguientes limitaciones:

  • Siempre que sea posible, utilice un campo EmbeddedModelField en lugar de uno ForeignKey para evitar $lookup operaciones. Un campo EmbeddedModelField emula un documento incrustado de MongoDB y ofrece un mejor rendimiento que un ForeignKey campo. Para obtener más información sobre cómo reducir las $lookup operaciones, consulte la guía "Reducir operaciones $lookup" en la documentación de Atlas.

  • El rendimiento de las eliminaciones en CASCADA en un campo ForeignKey no es tan eficiente como usar un EmbeddedModelField.

GeneratedField

No admitido.

JSONField

Soportado parcialmente. Se puede utilizar este tipo de campo con las siguientes limitaciones:

  • El backend de Django MongoDB no puede distinguir entre un valor null de JSON y de SQL. Las consultas que utilizan Value(None, JSONField()) o la búsqueda isnull devuelven tanto valores JSON como SQL null.

  • Algunas consultas con Q objetos, como Q(value__foo="bar"), podrían no funcionar como se espera.

  • El filtrado de valores None devuelve incorrectamente objetos en los que un campo no existe.

Django MongoDB Backend actualmente es compatible con todos los métodos QuerySet de Django no incluidos en la siguiente tabla. Para ver los métodos compatibles, consulta QuerySet API en la documentación de Django.

Funcionalidad de Django QuerySet
Soporte actual

delete()

You cannot use this method to perform queries that span multiple collections.

extra()

No admitido.

Búsquedas de coincidencia de patrones

You can only use these lookups to query string fields.
The pattern-matching lookups are iexact, startswith, istartswith, endswith, iendswith, contains, icontains, regex, and iregex

prefetch_related()

No admitido.

raw()

No compatible. Sin embargo, puedes utilizar el método raw_aggregate() para ejecutar consultas que usen la sintaxis del pipeline de agregación de MongoDB.

select_for_update()

No admitido.

update()

You cannot use this method to perform queries that span multiple collections.

El Backend de Django MongoDB actualmente admite todas las funciones de la base de datos que no están incluidas en la siguiente tabla. Para ver una lista completa de funciones, consulte Funciones de base de datos en la documentación de Django.

Función de Django
Soporte actual

Chr

No admitido.

ExtractQuarter

No admitido.

MD5

No admitido.

Now

No admitido.

Ord

No admitido.

Pad

No admitido.

Repeat

No admitido.

Reverse

No admitido.

Right

No admitido.

SHA1, SHA224, SHA256, SHA384, SHA512

No admitido.

Sign

No admitido.

StringAgg

No admitido.

Trunc

Soportado parcialmente. El parámetro tzinfo de las funciones de base de datos TruncDate y TruncTime no es compatible.

Funcionalidad Django
Soporte actual

Administrador de Django

Autenticación de Django

GeoDjango

Parcialmente compatible. Este framework web es compatible con las siguientes limitaciones:

  • Las funciones agregadas de SIG y las funciones de bases de datos geográficas no son compatibles.

  • MongoDB no admite ningún identificador de sistema de referencia espacial aparte de 4326.

  • RasterField No es compatible.

El backend Django MongoDB es compatible con los formularios de Django, pero PolymorphicEmbeddedModelField y PolymorphicEmbeddedModelArrayField no aparecen en formularios.

El backend de MongoDB para Django actualmente es compatible con todos los comandos de gestión excepto los incluidos en la siguiente tabla. Para ver una lista completa de comandos, consulta Comandos disponibles en la documentación de Django.

Comando de Django
Soporte actual

createcachetable

No admitido.

dumpdata

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

inspectdb

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

loaddata

No compatible. Sin embargo, planeamos agregar soporte para esta funcionalidad en una versión posterior a GA.

Funcionalidad Django
Soporte actual

Creando, borrando y actualizando índices mediante comandos de migración

Soportado parcialmente. No puedes actualizar los índices en modelos integrados o en campos de arreglo.

No admitido.

migrate --fake-initial opción

No admitido.

Migraciones para modelos integrados

Parcialmente compatible. Los comandos de migración no detectan cambios en los campos de modelo incrustados ni en los modelos incrustados referenciados por PolymorphicEmbeddedModelField PolymorphicEmbeddedModelArrayFieldo.

Librería
Soporte actual

Parcialmente compatible. Para obtener más información sobre los casos de uso y las limitaciones de esta biblioteca, consulte el filtro de Django en la documentación de la CLI de Django MongoDB.

Soportado parcialmente. Para aprender más sobre los casos de uso y las limitaciones de esta librería, consulta Django rest framework en la documentación de Django MongoDB CLI.

Parcialmente compatible. Para obtener más información sobre los casos de uso y las limitaciones de esta biblioteca, consulte Django allauth en la documentación de la CLI de Django MongoDB.

Parcialmente compatible. Para obtener más información sobre los casos de uso y las limitaciones de esta biblioteca, consulte la barra de herramientas de depuración de Django en la documentación de la CLI de Django MongoDB.

Volver

Notas de versión

En esta página