-
Notifications
You must be signed in to change notification settings - Fork 7
DOCSP-46329 Add Limitations page #12
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
DOCSP-46329 Add Limitations page #12
Conversation
✅ Deploy Preview for docs-django ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! Added in minor corrections.
source/limitations.txt
Outdated
|
||
- ``EmbeddedModelField`` | ||
|
||
- You cannot change embedded models after creation. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- You cannot change embedded models after creation. | |
- EmbeddedModel schema changes do not register after creation. |
source/limitations.txt
Outdated
- You cannot change embedded models after creation. | ||
- Embedded documents cannot take Django foreign keys. | ||
- {+django-odm+} does not support arbitrary or untyped embedded model | ||
fields. You must derive all fields from a ``Model`` class. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fields. You must derive all fields from a ``Model`` class. | |
fields. You must derive all fields from a ``EmbeddedModel`` class. |
source/limitations.txt
Outdated
- The ``DurationField`` stores milliseconds rather than microseconds. | ||
|
||
The following field types are unavailable in {+django-odm+}: | ||
|
||
- ``GeneratedField`` | ||
- ``ImageField`` | ||
|
||
- ``ForeignKey`` | ||
|
||
- When possible, you should use an ``EmbeddedModelField`` instead of a | ||
``ForeignKey`` field to avoid using ``$lookup`` operations. An | ||
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs | ||
better than a ``ForeignKey`` field. To learn more about how to reduce | ||
``$lookup`` operations, see the :atlas:`Reduce $lookup Operations | ||
</schema-suggestions/reduce-lookup-operations/>` guide in the Atlas | ||
documentation. | ||
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ | ||
on a ``ForeignKey`` field is not as performant as using an | ||
``EmbeddedModelField``. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- The ``DurationField`` stores milliseconds rather than microseconds. | |
The following field types are unavailable in {+django-odm+}: | |
- ``GeneratedField`` | |
- ``ImageField`` | |
- ``ForeignKey`` | |
- When possible, you should use an ``EmbeddedModelField`` instead of a | |
``ForeignKey`` field to avoid using ``$lookup`` operations. An | |
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs | |
better than a ``ForeignKey`` field. To learn more about how to reduce | |
``$lookup`` operations, see the :atlas:`Reduce $lookup Operations | |
</schema-suggestions/reduce-lookup-operations/>` guide in the Atlas | |
documentation. | |
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ | |
on a ``ForeignKey`` field is not as performant as using an | |
``EmbeddedModelField``. | |
- The ``DurationField`` stores milliseconds rather than microseconds. | |
- ``ForeignKey`` | |
- When possible, you should use an ``EmbeddedModelField`` instead of a | |
``ForeignKey`` field to avoid using ``$lookup`` operations. An | |
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs | |
better than a ``ForeignKey`` field. To learn more about how to reduce | |
``$lookup`` operations, see the :atlas:`Reduce $lookup Operations | |
</schema-suggestions/reduce-lookup-operations/>` guide in the Atlas | |
documentation. | |
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ | |
on a ``ForeignKey`` field is not as performant as using an | |
``EmbeddedModelField``. | |
The following field types are unavailable in {+django-odm+}: | |
- ``GeneratedField`` | |
- ``ImageField`` | |
This needs to be moved to above the "The following field types are unavailable..." - JSONField
has its own section.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Jibola do we want to add a line around lack of support for Embeddedfield in Array. If their data is of this type they should use Join for now until we release the support for embeddedfield in array?
source/limitations.txt
Outdated
~~~~~~~~~~~~~~~~~~ | ||
|
||
- {+django-odm+} does not support ``GeoDjango``. | ||
- {+django-odm+} does not have any ``$lookup`` operators for MongoDB-specific |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- {+django-odm+} does not have any ``$lookup`` operators for MongoDB-specific | |
- {+django-odm+} does not have any Django lookup operators for MongoDB-specific |
source/limitations.txt
Outdated
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 customer demand. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would replace customer with "user" or any similar word to indicate it's not just paying customer.
- Creation of ``$vectorSearch`` and ``$search`` indexes through the Django | ||
Indexes API | ||
- Creating geospatial indexes through the Django Indexes API | ||
- Updating indexes in ``EmbeddedModelFields`` after model creation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we link to the page where we cover exposing mongoclient so that people know the workaround? @Jibola
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, that's in the "Raw Queries" section
source/limitations.txt
Outdated
|
||
The following model limitations apply to {+django-odm+}: | ||
|
||
- {+django-odm+} does not support multiple models within a collection. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Jibola @jordan-smith721 How about something like this?
Currently, the integration enforces a one-to-one mapping between a Django model and a MongoDB collection, meaning multiple models cannot share the same collection.
source/limitations.txt
Outdated
- The ``DurationField`` stores milliseconds rather than microseconds. | ||
|
||
The following field types are unavailable in {+django-odm+}: | ||
|
||
- ``GeneratedField`` | ||
- ``ImageField`` | ||
|
||
- ``ForeignKey`` | ||
|
||
- When possible, you should use an ``EmbeddedModelField`` instead of a | ||
``ForeignKey`` field to avoid using ``$lookup`` operations. An | ||
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs | ||
better than a ``ForeignKey`` field. To learn more about how to reduce | ||
``$lookup`` operations, see the :atlas:`Reduce $lookup Operations | ||
</schema-suggestions/reduce-lookup-operations/>` guide in the Atlas | ||
documentation. | ||
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ | ||
on a ``ForeignKey`` field is not as performant as using an | ||
``EmbeddedModelField``. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Jibola do we want to add a line around lack of support for Embeddedfield in Array. If their data is of this type they should use Join for now until we release the support for embeddedfield in array?
============ | ||
Limitations | ||
============ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@jordan-smith721 we should probably add a link here that if you a user wants us to support any specific feature listed here. They should let us know through our feedback portal: https://feedback.mongodb.com/forums/924286-drivers?category_id=370732 They can also vote on existing requested feature if it is relevant to them.
source/limitations.txt
Outdated
Performance | ||
----------- | ||
|
||
The engineering team is prioritizing performance improvements prior to the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Jibola @jordan-smith721 How does this sound?
Since this release is a Public Preview, our primary focus has been on feature development rather than performance optimizations. You may or may not notice performance limitations with certain workloads. If you encounter any performance issues, please file a ticket or share your feedback https://feedback.mongodb.com/forums/924286-drivers?category_id=370732.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Jibola @jordan-smith721 Are we not covering MongoDB feature limitations here?
source/limitations.txt
Outdated
To learn how to run unsupported database operations by operating directly on | ||
your ``MongoClient`` instance, see the :ref:`django-client-operations` guide. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note: This link will work once the PR is merged in
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, thank you for picking this up! left a few suggestions / questions
source/limitations.txt
Outdated
|
||
{+django-odm+} does not support the following index functionalities: | ||
|
||
- Creation of ``$vectorSearch`` and ``$search`` indexes through the Django |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: to match the verb tense of the other list items:
- Creation of ``$vectorSearch`` and ``$search`` indexes through the Django | |
- Creating ``$vectorSearch`` and ``$search`` indexes through the Django |
source/limitations.txt
Outdated
- Updating indexes in ``EmbeddedModelFields`` after model creation | ||
|
||
To learn how to run unsupported database operations by operating directly on | ||
your ``MongoClient`` instance, see the :ref:`django-client-operations` guide. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: since this is a section in the Raw Queries guide
your ``MongoClient`` instance, see the :ref:`django-client-operations` guide. | |
your ``MongoClient`` instance, see :ref:`django-client-operations` in the Perform Raw Database Queries guide. |
|
||
Indexes | ||
~~~~~~~ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Q: should we also mention that expression indexes aren't supported? @Jibola
source/limitations.txt
Outdated
- ``ArrayField`` | ||
|
||
- {+django-odm+} does not support ``ArrayField`` polymorphism. | ||
- {+django-odm+} does not support ``EmbeddedModelField`` within an ``ArrayField``. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: a little clearer
- {+django-odm+} does not support ``EmbeddedModelField`` within an ``ArrayField``. | |
- {+django-odm+} does not support nesting an ``EmbeddedModelField`` within an ``ArrayField``. |
source/limitations.txt
Outdated
- Filtering with a ``None`` key incorrectly returns objects in which a key | ||
does not exist. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: I think using field/value mongodb terminology makes more sense, since you use "value" in the first bullet
- Filtering with a ``None`` key incorrectly returns objects in which a key | |
does not exist. | |
- Filtering for ``None`` values incorrectly returns objects in which a field | |
does not exist. |
source/limitations.txt
Outdated
|
||
- When possible, you should use an ``EmbeddedModelField`` instead of a | ||
``ForeignKey`` field to avoid using ``$lookup`` operations. An | ||
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: remove comma before dependent clause
``EmbeddedModelField`` emulates a MongoDB embedded document, and performs | |
``EmbeddedModelField`` emulates a MongoDB embedded document and performs |
source/limitations.txt
Outdated
``$lookup`` operations, see the :atlas:`Reduce $lookup Operations | ||
</schema-suggestions/reduce-lookup-operations/>` guide in the Atlas | ||
documentation. | ||
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: might be better to link to the specific cascade section; also article
- The performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#foreignkey>`__ | |
- Performance of `CASCADE deletes <{+django-docs+}/ref/models/fields/#django.db.models.CASCADE>`__ |
source/limitations.txt
Outdated
- {+django-odm+} does not have any Django lookup operators for MongoDB-specific | ||
geospatial queries. | ||
|
||
Aggregation operators |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S:
Aggregation operators | |
Aggregation Operators |
source/limitations.txt
Outdated
Aggregation operators | ||
~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
{+django-odm+} does not contain any custom Django Field lookups for the MongoDB |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: lowercase field (I think)
{+django-odm+} does not contain any custom Django Field lookups for the MongoDB | |
{+django-odm+} does not contain any custom Django field lookups for the MongoDB |
source/limitations.txt
Outdated
aggregation framework. Instead, use the ``raw_aggregate`` method. For more | ||
information on the ``raw_aggregate`` method. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: you can link to the raw query guide; also, I'd add () after method names
aggregation framework. Instead, use the ``raw_aggregate`` method. For more | |
information on the ``raw_aggregate`` method. | |
aggregation framework. Instead, use the ``raw_aggregate()`` method. For more | |
information on the ``raw_aggregate()`` method, see | |
the :ref:`django-raw-queries` guide. |
source/limitations.txt
Outdated
The following field types are unavailable in {+django-odm+}: | ||
|
||
- ``GeneratedField`` | ||
- ``ImageField`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- ``ImageField`` | |
- ``AutoField`` | |
- ``BigAutoField`` | |
- ``SmallAutoField`` |
Looks like we support ImageField. I'll place
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can add to the fields in the Create Models guide
- Creation of ``$vectorSearch`` and ``$search`` indexes through the Django | ||
Indexes API | ||
- Creating geospatial indexes through the Django Indexes API | ||
- Updating indexes in ``EmbeddedModelFields`` after model creation |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, that's in the "Raw Queries" section
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with final small comments!
source/limitations.txt
Outdated
|
||
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. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S:
Perform Raw Database Queries. | |
Perform Raw Database Queries guide. |
source/limitations.txt
Outdated
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 it as shown in the :ref:`Issues & Help <django-issues-and-help>` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
S: [nit]
please report it as shown in the :ref:`Issues & Help <django-issues-and-help>` | |
please report them as shown in the :ref:`Issues & Help <django-issues-and-help>` |
source/limitations.txt
Outdated
The following field types are unavailable in {+django-odm+}: | ||
|
||
- ``GeneratedField`` | ||
- ``ImageField`` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can add to the fields in the Create Models guide
Pull Request Info
PR Reviewing Guidelines
JIRA - https://jira.mongodb.org/browse/DOCSP-46329
Staging Links
https://deploy-preview-12--docs-django.netlify.app/limitations/
Self-Review Checklist