限制
Overview
在此页面上,您可以找到 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和SQLnull
值。某些使用
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 管理命令限制
Django MongoDB后端不支持以下 Django管理命令:
createcachetable
inspectdb
optimizemigration
sqlflush
sqlsequencereset
迁移限制
Django MongoDB后端不支持强制模式验证。 要学习;了解如何在应用程序中实施模式验证,请参阅MongoDB Server手册中的指定JSON schema验证指南。
Django MongoDB后端不支持DDL 事务。
Django MongoDB后端不支持
migrate --fake-initial
命令。
异步支持
尚未测试 Django MongoDB后端是否支持Django API的异步功能。
数据类型
Django MongoDB后端没有针对 BSONRegExp
数据类型的自定义 Field
类。 请改用 CharField
类。
性能
工程团队正在优先开发 Django MongoDB后端公共预览发布的功能。 因此,您可能会注意到某些工作负载存在性能限制。 如果您遇到任何性能问题,请按照问题和帮助指南中的说明进行报告。您还可以在驱动程序反馈论坛上股票您的反馈。