Skip to content

DOCSP-46984: Upcoming features #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 15 commits into from
Feb 3, 2025
Merged
185 changes: 168 additions & 17 deletions source/limitations.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
.. _django-limitations:

============
Limitations
============
=================================
Limitations and Upcoming Features
=================================

.. contents:: On this page
:local:
Expand All @@ -27,8 +27,28 @@ releases based on user demand. You can request support for a feature by leaving
a suggestion on the `Drivers Feedback Forum
<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.

You can also find a list of features that {+django-odm+}
will likely support in upcoming releases.

Feature Limitations
-------------------

In this section, you can learn about the following
types of unsupported {+framework+} and MongoDB features:

- :ref:`django-limitations-database`
- :ref:`django-limitations-models`
- :ref:`django-limitations-query`
- :ref:`django-limitations-management`
- :ref:`django-limitations-migration`
- :ref:`django-limitations-async`
- :ref:`django-limitations-data`
- :ref:`django-limitations-performance`

.. _django-limitations-database:

Unsupported Database Variables
------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

The following database variables are not supported by {+django-odm+}:

Expand All @@ -37,16 +57,18 @@ The following database variables are not supported by {+django-odm+}:
- ``CONN_HEALTH_CHECKS``
- ``TIME_ZONE``

.. _django-limitations-models:

Model Limitations
-----------------
~~~~~~~~~~~~~~~~~

The following limitations apply to models in {+django-odm+}:

- {+django-odm+} enforces a one-to-one mapping between a Django model and a
MongoDB collection. Because of this, multiple models cannot share the same collection.

Indexes
~~~~~~~
```````

{+django-odm+} does not support the following index functionalities:

Expand All @@ -59,8 +81,10 @@ To learn how to run unsupported database operations by operating directly on
your ``MongoClient`` instance, see :ref:`django-client-operations` in the
Perform Raw Database Queries guide.

.. _django-limitations-models-fields:

Fields
~~~~~~
``````

{+django-odm+} has the following limitations on the specified field types:

Expand Down Expand Up @@ -115,8 +139,10 @@ The following field types are unavailable in {+django-odm+}:
- ``BigAutoField``
- ``SmallAutoField``

.. _django-limitations-query:

Querying Limitations
--------------------
~~~~~~~~~~~~~~~~~~~~

{+django-odm+} does not support the following ``QuerySet`` API methods:

Expand All @@ -130,14 +156,14 @@ Querying Limitations
that span multiple collections.

Geospatial Queries
~~~~~~~~~~~~~~~~~~
``````````````````

- {+django-odm+} does not support ``GeoDjango``.
- {+django-odm+} does not have any Django lookup operators for MongoDB-specific
geospatial queries.

Aggregation Operators
~~~~~~~~~~~~~~~~~~~~~
`````````````````````

{+django-odm+} does not contain any custom Django field lookups for the MongoDB
aggregation framework. Instead, use the ``raw_aggregate()`` method. For more
Expand All @@ -147,7 +173,7 @@ the :ref:`django-raw-queries` guide.
.. TODO: Link to aggregation

Database Functions
~~~~~~~~~~~~~~~~~~
``````````````````

{+django-odm+} does not support the following database functions:

Expand All @@ -166,8 +192,10 @@ Database Functions
The ``tzinfo`` parameter of the ``Trunc`` database functions doesn't work
properly because MongoDB converts the result back to UTC.

.. _django-limitations-management:

Django Management Command Limitations
-------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

{+django-odm+} does not support the following Django management commands:

Expand All @@ -177,8 +205,10 @@ Django Management Command Limitations
- ``sqlflush``
- ``sqlsequencereset``

.. _django-limitations-migration:

Migration Limitations
---------------------
~~~~~~~~~~~~~~~~~~~~~

- {+django-odm+} does not support enforced schema validation. To learn how to
enforce schema validation in your application, see the :manual:`Specify JSON
Expand All @@ -188,24 +218,145 @@ Migration Limitations
<{+django-docs+}/topics/migrations/#transactions>`__.
- {+django-odm+} does not support the ``migrate --fake-initial`` command.

Asynchronous Support
--------------------
.. _django-limitations-async:

Asynchronous Limitations
~~~~~~~~~~~~~~~~~~~~~~~~

{+django-odm+} has not been tested for support of the asynchronous functionality of
the Django API.

.. _django-limitations-data:

Data Types
----------
~~~~~~~~~~

{+django-odm+} does not have a custom ``Field`` class for the ``BSONRegExp``
data type. Instead, use the ``CharField`` class.

.. _django-limitations-performance:

Performance
-----------
~~~~~~~~~~~

The engineering team is prioritizing feature development for the Public Preview
release of {+django-odm+}. Because of this, you might notice performance
limitations with certain workloads. If you encounter any performance issues,
please report them as shown in the :ref:`Issues & Help <django-issues-and-help>`
guide. You can also share your feedback on the `Drivers Feedback Forum
<https://feedback.mongodb.com/forums/924286-drivers?category_id=370732>`__.

Upcoming Features
-----------------

In this section, you can learn about the following
types of {+framework+} and MongoDB features that
General Availability (GA) and post-GA {+django-odm+} releases
will likely introduce:

- :ref:`django-upcoming-models`
- :ref:`django-upcoming-database`
- :ref:`django-upcoming-third-party`
- :ref:`django-upcoming-management`
- :ref:`django-upcoming-variables`
- :ref:`django-upcoming-async`

.. _django-upcoming-models:

Model Features
~~~~~~~~~~~~~~

We plan to support the following model features in
upcoming releases:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we remove all upcoming with "GA"/ Post-GA release? Upcoming may sound like the next release. We will have many smaller releases leading up to the final GA release.


- Creating arrays of embedded documents
- Creating polymorphic embedded documents and arrays
- Applying changes to the schema of embedded models to
``EmbeddedModelField`` values
- Creating multiple models within a collection
- Using forms in embedded models
- Resolve the ``JSONField`` limitations listed in the
:ref:`Field limitations <django-limitations-models-fields>` section of
this guide
- Using a custom ``Field`` class for the ``BSONRegExp`` data type

.. _django-upcoming-database:

Database Features
~~~~~~~~~~~~~~~~~

We plan to support the following database features in
upcoming releases:

- Creating Vector Search, Atlas Search, and geospatial indexes
- Performing Vector Search, Atlas Search, and geospatial queries
- Encrypting data by using Queryable Encryption and Client-side Field Level Encryption
- Running database transactions
- Using specialized aggregation operators
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can remove this for now.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Using specialized aggregation operators"

- Specifying schema validation
- Using GridFS to store large files
- Opening change streams to monitor your data

.. tip::

To learn more about the MongoDB features mentioned in this section, see
the following resources:

- :atlas:`Atlas Vector Search </atlas-vector-search/vector-search-overview/>` in the Atlas documentation
- :atlas:`Atlas Search </atlas-search>` in the Atlas documentation
- :manual:`Geospatial Queries </geospatial-queries/>` in the {+mdb-server+}
manual
- :manual:`In-Use Encryption </security-in-use-encryption/>` in the {+mdb-server+}
manual
- :manual:`Transactions </transactions/>` in the {+mdb-server+}
manual
- :manual:`GridFS </gridfs/>` in the {+mdb-server+}
manual
- :manual:`Change Streams </changeStreams/>` in the {+mdb-server+}
manual

.. _django-upcoming-third-party:

Third Party Features
~~~~~~~~~~~~~~~~~~~~

We plan to support the following third-party features in
upcoming releases:

- `Django-filter <https://django-filter.readthedocs.io/en/stable/>`__
- `Django Rest Framework <https://www.django-rest-framework.org/>`__
- `Django-allauth <https://docs.allauth.org/en/latest/>`__
- `Wagtail <https://wagtail.org/>`__
- `Django Debug Toolbar <https://django-debug-toolbar.readthedocs.io/en/latest/>`__

.. _django-upcoming-management:

Django Management Command Features
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

We plan to support the following Django commands in
upcoming releases:

- ``dumpdata``
- ``loaddata``
- ``inspectdb``
- ``optimizemigration``

.. _django-upcoming-variables:

Database Variable Support
~~~~~~~~~~~~~~~~~~~~~~~~~

We plan to support the following Django variables for configuring
your database connection in upcoming releases:

- ``CONN_HEALTH_CHECKS``
- ``TIME_ZONE``

.. _django-upcoming-async:

Asynchronous Support
~~~~~~~~~~~~~~~~~~~~

We plan to offer asynchronous support for {+django-odm+} in future
releases.
Loading