Docs Menu
Docs Home
/ /

Compatibilidad de funciones de Django y MongoDB

En esta página, encontrará información sobre las funciones compatibles y no compatibles con el backend de Django MongoDB. También encontrará funciones planificadas para futuras versiones. 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.

Django MongoDB Backend admite las siguientes operaciones, pero pueden tener menor rendimiento:

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 varias funciones de MongoDB.

Característica de MongoDB
Soporte actual

Índices 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 índices de búsqueda en algunos tipos de datos. Para ver una lista de tipos no compatibles, consulte Limitaciones de tipos de datos en la documentación de MongoDB Atlas.

Índices de búsqueda vectorial

Parcialmente compatible. Puede usar el backend de Django MongoDB 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. Los demás campos de definición de índice no son compatibles.

Índices compuestos

Índices de documentos incrustados

Índices geoespaciales

Multikey indexes

Índices parciales

Índices de campo único

Unique indexes

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

Sin soporte.

EmbeddedModelArrayField indexes

PolymorphicEmbeddedModelField y PolymorphicEmbeddedModelArrayField índices

Sin soporte.

El backend de Django MongoDB actualmente admite todos los tipos de datos de MongoDB no incluidos en la siguiente tabla. Para ver la lista completa de tipos compatibles, consulte la sección "Campos BSON de MongoDB" de la guía "Crear modelos".

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.
Característica de MongoDB
Soporte actual

Operaciones de agregación

Parcialmente compatible. El backend de Django MongoDB no incluye búsquedas de campos personalizados para el marco de agregación de MongoDB, pero se puede usar el método raw_aggregate().

Consultas de búsqueda de MongoDB

Operaciones de eliminación

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 actualización

Consultas de búsqueda vectorial de MongoDB

Característica de MongoDB
Soporte actual

Soporte asincrónico

Autenticación

Almacenamiento de datos en caché

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Flujos de cambio

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Cifrado a nivel de campo del lado del cliente y cifrado consultable

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Interacción de la colección

Interacción con la base de datos

GridFS

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Múltiples modelos para una sola colección

Sin soporte.

Representando documentos

Use models to represent MongoDB documents.

Validación de esquema

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Datos de series temporales

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 actualmente admite todos los campos de Django no incluidos en la siguiente tabla. Para ver la lista completa de campos compatibles, consulte la sección "Campos de Django" de la guía "Crear modelos".

Tipo de campo de Django
Soporte actual

AutoField

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

CompositePrimaryKey

Sin soporte.

DateTimeField

Microsecond granularity for DateTimeField values is not supported.

DurationField

DurationField stores milliseconds rather than microseconds.

ForeignKey

Parcialmente compatible. Puede usar 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 CASCADE en un ForeignKey campo no es tan eficiente como el uso de EmbeddedModelField un.

GeneratedField

Sin soporte.

JSONField

Parcialmente compatible. Puede usar este tipo de campo con las siguientes limitaciones:

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

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

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

El backend de Django MongoDB actualmente admite todos los QuerySet métodos de Django no incluidos en la siguiente tabla. Para ver los métodos compatibles, consulte la API de QuerySet en la documentación de Django.

Característica QuerySet de Django
Soporte actual

delete()

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

difference()

Sin soporte.

extra()

Sin soporte.

intersection()

Sin soporte.

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()

Sin soporte.

raw()

No compatible. Sin embargo, puede usar el raw_aggregate() método para ejecutar consultas que utilicen la sintaxis de canalización de agregación de MongoDB.

select_for_update()

Sin soporte.

update()

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

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

Función de Django
Soporte actual

Chr

Sin soporte.

ExtractQuarter

Sin soporte.

MD5

Sin soporte.

Now

Sin soporte.

Ord

Sin soporte.

Pad

Sin soporte.

Repeat

Sin soporte.

Reverse

Sin soporte.

Right

Sin soporte.

SHA1, SHA224, SHA256, SHA384, SHA512

Sin soporte.

Sign

Sin soporte.

StringAgg

Sin soporte.

Trunc

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

Característica de Django
Soporte actual

Administrador de Django

Autenticación de Django

GeoDjango

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

  • No se admiten funciones de agregación SIG ni funciones de bases de datos geográficas.

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

  • RasterField No es compatible.

Django MongoDB Backend admite formularios de Django, pero PolymorphicEmbeddedModelField y PolymorphicEmbeddedModelArrayField no aparecen en los 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

Sin soporte.

dumpdata

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

inspectdb

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

loaddata

No compatible. Sin embargo, planeamos añadir compatibilidad con esta función en una versión posterior a la disponibilidad general.

Característica de Django
Soporte actual

Creación, eliminación y actualización de índices mediante comandos de migración

Parcialmente compatible. No se pueden actualizar índices en campos de modelos o matrices incrustados.

Sin soporte.

migrate --fake-initial opción

Sin soporte.

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.

Parcialmente compatible. Para obtener más información sobre los casos de uso y las limitaciones de esta biblioteca, consulte el framework Django REST 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 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

Migrar aplicaciones de Djongo