Skip to content

Commit f869a30

Browse files
committed
revisions to readme. Included limitations. removed marketing cruft
1 parent 3234a85 commit f869a30

File tree

1 file changed

+62
-20
lines changed

1 file changed

+62
-20
lines changed

README.md

Lines changed: 62 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,7 @@ explore and build. The best way to share this is via our [MongoDB Community Foru
88

99
The development version of this package supports Django 5.0.x. To install it:
1010

11-
`pip install django-mongodb-backend`
12-
13-
### Resources
14-
15-
Check back soon as we aim to provide more links that will dive deeper into our library!
16-
17-
* [Developer Notes](DEV_NOTES.md)
11+
`pip install django-mongodb-backend~=5.0.0`
1812

1913

2014
## Quickstart
@@ -52,12 +46,6 @@ Then, visit http://127.0.0.1:8000/. This page displays a "Congratulations!" mess
5246

5347
## Capabilities of Django Backend for MongoDB
5448

55-
- **Database Connectivity**
56-
57-
- Directly tune MongoDB connection settings within your Django configuration\!
58-
- Work against a persisted cloud instance of MongoDB for free\!
59-
60-
6149
- **Model MongoDB Documents Through Django’s ORM**
6250

6351
- Translate Django model instances to MongoDB documents.
@@ -75,12 +63,11 @@ Then, visit http://127.0.0.1:8000/. This page displays a "Congratulations!" mess
7563

7664

7765
- **Querying Data**
78-
79-
- Querying API powered through the amazing MongoDB Aggregation Pipeline
66+
8067
- Supports most functions of the Django QuerySet API
8168
- Support Query Annotations and common SQL AGGREGATE operators
82-
- We support foreign keys and execute JOIN operations all in 1 database call
83-
- Through our custom raw\_aggregate call, MQL operations like Vector Search, Atlas Search, and GeoSpatial querying still yield Django QuerySet results\!
69+
Support foreign key usage and execute JOIN operations
70+
- Through our custom raw\_aggregate call, MQL operations like Vector Search, Atlas Search, and GeoSpatial querying still yield Django QuerySet resutts,
8471

8572

8673
- **Administrator Dashboard & Authentication**
@@ -89,10 +76,64 @@ Then, visit http://127.0.0.1:8000/. This page displays a "Congratulations!" mess
8976
- Fully integrated with Django's authentication framework.
9077
- Supports native user management features like creating users and sessions.
9178

79+
## Limitations of django-mongodb-backend
9280

93-
- **Management Commands**
94-
95-
- Use commands like `migrate`, `makemigrations`, `flush`, `sqlmigrate`, many more.
81+
- Database Variables `ATOMIC_REQUESTS`, `AUTOCOMMIT`, `CONN_HEALTH_CHECKS`, `TIME_ZONE` not supported
82+
- No support for GeoDjango
83+
- Functions such as `Chr`, `ExtractQuarter`, `MD5`, `Now`, `Ord`, `Pad`, `Repeat`, `Reverse`, `Right`, `SHA1`, `SHA224`, `SHA256`, `SHA384`, `SHA512`, and `Sign`.
84+
- The `tzinfo` parameter of the `Trunc` database functions does not work properly because MongoDB converts the result back to UTC.
85+
- Schema Validation is not enforced. Refer to MongoDB documentation for how to enforce schema validation.
86+
- Django DDL Transactions are not supported.
87+
- The `migrate --fake-initial` command is not supported due to the inability to introspect MongoDB collection schema.
88+
- The asynchronous functionality of the Django API has not yet been tested.
89+
- `BSONRegExp` has no custom field class. It is best represented as a `CharField`.
90+
91+
92+
#### **Model Limitations**
93+
94+
- `$vectorSearch` and `$search` and Geospatial index creation through the Django Indexes API is not yet available.
95+
- Updating indexes in `EmbeddedModels` do not work after the first table creation.
96+
97+
- **ArrayField**
98+
- Does not support `EmbeddedModel` within `ArrayField`.
99+
100+
- **EmbeddedModel**
101+
- Limited schema change support (no changing of embedded models).
102+
- Embedded documents cannot take Django ForeignKeys.
103+
- Arbitrary or untyped `EmbeddedModelField` is not supported. All fields must derive from an `EmbeddedModel` class.
104+
105+
- **JSONField**
106+
- There is no way to distinguish between a JSON "null" and a SQL null in specific queries.
107+
- Some queries with Q objects, e.g., `Q(value__foo="bar")`, don't work properly, particularly with `QuerySet.exclude()`.
108+
- Filtering for a `None` key, e.g., `QuerySet.filter(value__j=None)`, incorrectly returns objects where the key doesn't exist.
109+
110+
- **DateTimeField**
111+
- No support for microsecond granularity.
112+
113+
- **DurationField**:
114+
- Stores milliseconds rather than microseconds.
115+
116+
- **Unavailable Fields**:
117+
- `GeneratedField`
118+
- `ImageField`
119+
120+
121+
- **These QuerySet API methods do not work**
122+
123+
- `distinct()`
124+
- `dates()`
125+
- `datetimes()`
126+
- `prefetch_related()`
127+
- `extra()`
128+
- `QuerySet.delete()` and `update()` do not support queries that span multiple collections.
129+
130+
131+
- **Django Management Commands that do not work**
132+
- `createcachetable`
133+
- `inspectdb`
134+
- `optimizemigration`
135+
- `sqlflush`
136+
- `sqlsequencereset`
96137

97138

98139
## Future Commitments of Django Backend for MongoDB
@@ -133,6 +174,7 @@ Then, visit http://127.0.0.1:8000/. This page displays a "Congratulations!" mess
133174

134175
These future capabilities are intended to enhance the functionality of the Django Backend for MongoDB as it progresses towards a General Availability (GA) release. If you have any more specific questions or need further details, feel free to ask\!
135176

177+
136178
### Issues & Help
137179

138180
We're glad to have such a vibrant community of users of Django MongoDB Backend. We recommend seeking support for general questions through the MongoDB Community Forums.

0 commit comments

Comments
 (0)