Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs 菜单
Docs 主页
/ / /
Django MongoDB后端

限制和即将推出的功能

在此页面上,您可以找到 Django MongoDB后端不支持的功能列表。您还可以找到当前计划用于正式发布 (GA) 和发布后版本的功能。我们将根据用户需求对这些即将推出的功能进行优先级排序,您可以通过 创建 JIRA 问题 请求对某项功能的支持。

在本节中,您可以学习;了解以下类型的不支持的 Django 和MongoDB功能:

  • 事务管理

  • 模型限制

  • 查询限制

  • 不支持的管理命令

  • 迁移限制

  • 缓存

  • 性能

查询执行使用 Django 和 MongoDB 的默认行为 autocommit模式。每个查询都会立即提交到数据库。

不支持 Django 的ACID 事务管理API。

Django 不支持MongoDB 的多态模式,在这种模式下,略有不同的模型股票相同的集合。

Django MongoDB后端不支持以下索引功能:

  • 通过 Django Indexes API创建 $vectorSearch$search 索引

  • 通过 Django Indexes API创建地理空间索引

  • 创建模型后更新 EmbeddedModelFields 中的索引

Django MongoDB后端对指定的字段类型有以下限制:

  • ArrayField

    • ArrayField 不支持多态性。

    • 不支持 ArrayField 中嵌套的 EmbeddedModelField 值。

  • EmbeddedModelField

    • EmbeddedModel 模式更改在创建后不会注册。

    • 嵌入式文档不能使用 Django 外键。

    • 不支持任意或无类型的嵌入式模型字段。您必须从 EmbeddedModel 类派生所有字段。

  • JSONField

    • Django MongoDB后端无法区分JSON和SQL null 值。 使用 Value(None, JSONField())isnull 查找的查询会同时返回JSON和SQL null 值。

    • 某些使用 Q 对象的查询(例如 Q(value__foo="bar"))可能无法按预期运行。

    • 筛选 None 值会错误地返回其中不存在字段的对象。

  • DateTimeField

    • 不支持 DateTimeField 值的微秒粒度。

  • DurationField

    • DurationField 存储毫秒而不是微秒。

  • ForeignKey

    • 如果可能,应使用 EmbeddedModelField 而不是 ForeignKey字段,以避免使用 $lookup 操作。 EmbeddedModelField 模拟MongoDB嵌入式文档,其性能优于 ForeignKey字段。 要学习;了解有关如何减少$lookup 操作的更多信息,请参阅Atlas文档中的减少 $lookup 操作指南。

    • 在 字段上 CASCADE 删除的性能不如使用ForeignKey EmbeddedModelField时的性能。

以下字段类型在 Django MongoDB后端中不可用:

  • GeneratedField

  • AutoField (包括 BigAutoFieldSmallAutoField

Django MongoDB后端不支持以下 QuerySet API方法:

  • prefetch_related()

  • extra()

Django MongoDB后端不支持跨越多个集合的 QuerySet.delete()update() 查询。

Django MongoDB后端不支持以下地理空间查询功能:

  • GeoDjango

  • 用于特定于MongoDB 的地理空间查询的 Django 查找操作符

Django MongoDB后端不包含MongoDB聚合框架的任何自定义 Django字段查找。请改用 raw_aggregate() 方法。请参阅执行原始数据库查询指南。

Django MongoDB后端不支持以下数据库功能:

  • Chr

  • ExtractQuarter

  • MD5

  • Now

  • Ord

  • Pad

  • Repeat

  • Reverse

  • Right

  • SHA1, SHA224 , SHA256 , SHA384 , SHA512

  • Sign

  • 不支持TruncDateTruncTime数据库函数的tzinfo参数。

不支持以下 django-admin 命令:

  • createcachetable (请参阅缓存

  • inspectdb

Django MongoDB后端不支持以下迁移功能:

  • 强制模式验证。要学习;了解如何在应用程序中实施模式验证,请参阅MongoDB Server手册中的指定JSON schema验证指南。

  • DDL 事务。

  • migrate --fake-initial 选项。

数据库缓存使用 Django MongoDB后端的 createcachecollection 命令,而不是 Django 的特定于SQL的 createcachetable 命令。

其次,您必须使用 django_mongodb_backend.cache.MongoDBCache后端,而不是 Django 的内置数据库缓存后端django.core.cache.backends.db.DatabaseCache

工程团队正在优先开发 Django MongoDB后端公共预览发布的功能。因此,您可能会注意到某些工作负载存在性能限制。如果您遇到任何性能问题,请按照问题和帮助指南中的说明进行报告。

在本节中,您可以学习;了解正式发布和正式发布后的 Django MongoDB后端版本可能会引入的以下类型的 Django 和MongoDB功能:

我们计划在 GA发布中支持以下MongoDB功能:

  • 使用 Django API对 Vector Search、 Atlas Search和地理空间索引进行编程管理

  • 使用 Django API进行 Vector Search、 Atlas Search和地理空间查询

  • Queryable Encryption和客户端字段级加密

  • 数据库事务

我们计划在未来的正式发布后版本中支持以下MongoDB功能:

  • 用于大文件存储的GridFS

  • 用于数据监控的变更流

  • 模式验证

提示

要学习;了解有关本节中提到的MongoDB功能的更多信息,请参阅以下资源:

我们计划在 GA发布中支持以下模型功能:

  • 嵌入式文档数组

  • 多态嵌入式文档和数组

  • 将对嵌入式模型模式的更改应用于 EmbeddedModelField

  • 集合中的多个模型

  • 改进嵌入式模型中的表单表示

在未来的正式发布中,我们计划为 BSONRegExp数据类型添加自定义模型字段。

EmbeddedModelField 的序列化支持(即Django 的 dumpdataloaddata管理命令)将由 GA发布添加。

我们计划在 GA发布之前测试与以下第三方库的兼容性:

后退

事务

在此页面上