Docs 菜单

限制

在此页面上,您可以找到 Django MongoDB后端不支持的功能列表。 由于 Django MongoDB后端正处于积极开发阶段,因此根据用户需求,可能会考虑在未来版本中考虑使用此页面上列出的某些功能。 您可以通过在 驱动程序反馈论坛上留下建议请求对某项功能的支持。

Django MongoDB后端不支持以下数据库变量:

  • ATOMIC_REQUESTS

  • AUTOCOMMIT

  • CONN_HEALTH_CHECKS

  • TIME_ZONE

以下限制应用于 Django MongoDB后端中的模型:

  • Django MongoDB后端在 Django 模型和MongoDB集合之间实施一对一映射。 因此,多个模型不能股票同一个集合。

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

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

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

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

要学习;了解如何通过直接操作MongoClient 实例来运行不支持的数据库操作,请参阅《执行原始数据库查询》指南中的 MongoClient 操作。

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

  • ArrayField

    • Django MongoDB后端不支持ArrayField 多态性。

    • Django MongoDB后端不支持在 ArrayField 中嵌套 EmbeddedModelField

  • EmbeddedModelField

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

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

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

  • JSONField

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

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

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

  • DateTimeField

    • Django MongoDB后端不支持DateTimeField 的微秒粒度。

  • DurationField

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

  • ForeignKey

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

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

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

  • GeneratedField

  • AutoField

  • BigAutoField

  • SmallAutoField

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

  • distinct()

  • dates()

  • datetimes()

  • prefetch_related()

  • extra()

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

  • Django MongoDB后端不支持GeoDjango

  • Django MongoDB后端没有任何用于特定于MongoDB的地理空间查询的 Django 查找操作符。

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

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

  • Chr

  • ExtractQuarter

  • MD5

  • Now

  • Ord

  • Pad

  • Repeat

  • Reverse

  • Right

  • SHA1, SHA224 , SHA256 , SHA384 , SHA512

  • Sign

Trunc数据库函数的 tzinfo 参数无法正常运行,因为MongoDB会将结果转换回 UTC。

Django MongoDB后端不支持以下 Django管理命令:

  • createcachetable

  • inspectdb

  • optimizemigration

  • sqlflush

  • sqlsequencereset

尚未测试 Django MongoDB后端是否支持Django API的异步功能。

Django MongoDB后端没有针对 BSONRegExp数据类型的自定义 Field 类。 请改用 CharField 类。

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