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
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions source/index.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Django MongoDB Backend
Connection Configuration </connect>
Model Your Data </model-data>
Interact with Data </interact-data>
Limitations </limitations>
Limitations & Upcoming Features </limitations-upcoming>
Issues & Help </issues-and-help>
Compatibility </compatibility>
API Documentation <{+api+}>
Expand Down Expand Up @@ -56,10 +56,11 @@ Interact with Data
Learn how to use {+django-odm+} to perform operations on MongoDB data
in the :ref:`django-interact-data` section.

Limitations
-----------
Limitations and Upcoming Features
---------------------------------

Learn about the features that {+django-odm+} does not support
and features that we plan to support in upcoming releases
in the :ref:`django-limitations` section.

Compatibility
Expand Down
205 changes: 183 additions & 22 deletions source/limitations.txt → source/limitations-upcoming.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
.. _django-limitations:

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

.. contents:: On this page
:local:
:backlinks: none
:depth: 1
:depth: 2
:class: singlecol

.. facet::
Expand All @@ -21,14 +21,31 @@ Overview
--------

On this page, you can find a list of features that
{+django-odm+} does not support. Because {+django-odm+} is in active
development, some features listed on this page might be considered for future
releases based on user demand. You can request support for a feature by leaving
a suggestion on the `Drivers Feedback Forum
{+django-odm+} does not support and features currently planned for
future releases. We will prioritize these upcoming features
based on user demand, and 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>`__.

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 +54,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 +78,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 +136,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 +153,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 +170,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 +189,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 +202,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 +215,158 @@ 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:
Copy link

Choose a reason for hiding this comment

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

Q: is there a better way to phrase this to be more authoritative? What's the limitation to just saying these features will be supported?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

None of these features are guaranteed, so I was asked to use non-authoritative language


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

.. _django-upcoming-mongodb:

MongoDB Features
~~~~~~~~~~~~~~~~

We plan to support the following MongoDB features in
the upcoming GA release:

- Creating Vector Search, Atlas Search, and geospatial indexes
- Performing Vector Search, Atlas Search, and geospatial queries
Copy link
Collaborator

Choose a reason for hiding this comment

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

This could be misleading. We should either remove it or change the language to say "improved" or "through the Django API"

Copy link
Collaborator

Choose a reason for hiding this comment

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

Performing Vector Search, Atlas Search, and geospatial queries directly through the Django API

Copy link

Choose a reason for hiding this comment

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

Suggested change
- Creating Vector Search, Atlas Search, and geospatial indexes
- Performing Vector Search, Atlas Search, and geospatial queries
- Programmatic management of Vector Search, Atlas Search, and geospatial indexes
- Vector Search, Atlas Search, and geospatial queries

- Encrypting data by using Queryable Encryption and Client-side Field Level Encryption
Copy link

Choose a reason for hiding this comment

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

Suggested change
- Encrypting data by using Queryable Encryption and Client-side Field Level Encryption
- Queryable Encryption and Client-side Field Level Encryption

- Running database transactions
- Storing Django's cached data in the database
Copy link

Choose a reason for hiding this comment

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

Suggested change
- Running database transactions
- Storing Django's cached data in the database
- Database transactions
- Storage of {+framework+}'s cached data in the database


We plan to support the following MongoDB features in
future post-GA releases:

- Using GridFS to store large files
Copy link

Choose a reason for hiding this comment

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

S: modify list to be nouns as you call them features instead of actions

- Opening change streams to monitor your data
- Specifying schema validation
- 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.

"Using specialized aggregation operators" - Let's remove this for now.


.. 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 </core/security-in-use-encryption/>` in the {+mdb-server+}
manual
- :manual:`Transactions </core/transactions/>` in the {+mdb-server+}
manual
- :manual:`GridFS </core/gridfs/>` in the {+mdb-server+}
manual
- :manual:`Change Streams </changeStreams/>` in the {+mdb-server+}
manual

.. _django-upcoming-models:

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

We plan to support the following model features in
the upcoming 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
- Improving form representation in embedded models

We plan to support the following model features in
future post-GA releases:

- Interacting with ``JSONField`` values without the limitations on ``Q`` object queries and
Copy link
Collaborator

Choose a reason for hiding this comment

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

Let's remove this. We have not promised this.

``None`` value filters listed in the :ref:`Field <django-limitations-models-fields>` limitations
section of this guide
- Using a custom ``Field`` class for the ``BSONRegExp`` data type

.. _django-upcoming-management:

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

We plan to support the following Django commands in
the upcoming GA release:

- ``dumpdata``
- ``loaddata``

We plan to support the following commands in
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 these two. We may not commit to adding these.

future post-GA releases:

- ``inspectdb``
- ``optimizemigration``

.. _django-upcoming-third-party:

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

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

- `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-variables:

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

We plan to support the following Django variables for configuring
your database connection in future post-GA releases:

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

.. _django-upcoming-async:

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

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