了解以下版本中的新功能:
6.0 中的新增功能
本部分列出了以下补丁版本中引入的更改:
版本 6.0.3
Django MongoDB后端 v6.0.3发布包含以下功能、改进和修复:
在URL模式中添加对
ObjectId匹配的支持。要学习;了解更多信息,请参阅API文档中的URL调度程序。添加对
PolymorphicEmbeddedModelField和PolymorphicEmbeddedModelArrayField子字段上的索引的支持。使用与EmbeddedModelField子字段索引相同的语法,如创建索引指南的 嵌入式模型子字段索引 部分所示。添加对
PolymorphicEmbeddedModelField和PolymorphicEmbeddedModelArrayField子字段的唯一约束的支持。使用与EmbeddedModelField子字段唯一约束相同的语法,如创建模型指南的嵌入式字段约束部分所示。更新
str(queryset.query)操作以输出MQL而不是SQL。在未配置Queryable Encryption时生成错误,防止在非加密数据库中创建具有加密字段的模型。
指示
makemigrations命令将嵌入式模型引用序列化为字符串。因此,如果稍后删除模型,则无需在迁移中调整模型引用。为
QuerySet.extra(where=...)和StringAgg(..., distinct=True)方法添加了一个NotSupportedError,而这些方法之前会返回不太具体的错误。不推荐使用
unique=True、db_index=True、Meta.constraints、Meta.indexes和Meta.unique_together来定义嵌入式模型字段的索引和约束。相反,请在顶层模型上使用EmbeddedFieldIndex和EmbeddedFieldUniqueConstraint。要学习;了解有关新语法的更多信息,请参阅嵌入式模型子字段索引和嵌入式字段约束。
版本 6.0.2
Django MongoDB后端 v6.0.2发布包含以下功能、改进和修复:
新增对
QuerySet.intersection()和QuerySet.difference()方法的支持。添加对
UniqueConstraint构造函数的nulls_distinct参数的支持,该参数允许您仅存储具有NULL值的一个文档。要学习;了解更多信息,请参阅创建模型指南中的指定唯一约束。添加了
EmbeddedFieldIndex类,可对EmbeddedModelField和EmbeddedModelArrayField值的子字段启用索引。要学习;了解更多信息,请参阅创建索引指南中的嵌入式模型子字段索引。添加
EmbeddedFieldUniqueConstraint类,该类可对EmbeddedModelField和EmbeddedModelArrayField值的子字段启用唯一约束。要学习;了解更多信息,请参阅创建模型指南中的嵌入式字段约束。修复了一个错误,该错误会导致在对具有加密字段的模型调用
Model.save()时出现错误。
版本 6.0.1
Django MongoDB后端 v6.0.1发布包含以下功能、改进和修复:
添加对Queryable Encryption 的支持。要了解更多信息,请参阅Queryable Encryption教程。
添加对空间查找的支持。要学习;了解详情,请参阅《指定查询》指南中的“查询地理空间值”。
防止
Index系统检查运行两次。为
DatabaseError和IntegrityError异常添加异常消息。修复了
QuerySet.defer()和QuerySet.only()行为,以便这些方法项目正确的字段。从聚合管道中删除
$facet的使用,从而提高查询性能。
版本 6.0.0
警告
重大更改
Django MongoDB后端 v6.0.0发布了以下重大更改:
删除对
django_mongodb_backend.utils.parse_uri()方法的支持。请改用DATABASES["HOST"]键。要学习;了解更多信息,请参阅《配置数据库连接》指南中的自动配置数据库设置。将支持的最低MongoDB版本从 6.0 增加到 7.0。
5.2 中的新增功能
本部分列出了以下补丁版本中引入的更改:
版本 5.2.4
Django MongoDB后端 v5.2.4发布包含以下功能、改进和修复:
通过将复杂条件从
$match阶段推送到$lookup阶段,提高使用$lookup聚合阶段的联接操作的性能
版本 5.2.3
Django MongoDB后端 v5.2.3发布包含以下功能、改进和修复:
防止
QuerySet.union()查询重复$project管道阶段。更新
Value类以在$literal操作符中包装字符串、字典和元组值,从而防止MongoDB将它们解释为表达式。同样,出于同样的原因,更新模型的查询现在会将值包装在$literal操作符中。使用
localField和foreignField简化$lookup查询。
版本 5.2.2
Django MongoDB后端 v5.2.2发布包含以下功能、改进和修复:
添加以下
SearchIndex参数,允许您创建更复杂的索引:field_mappingsanalyzersearch_analyzer
要学习;了解更多信息,请参阅 索引指南中的搜索索引。
修复了使用数据库转换器加载包含
EmbeddedModel字段的模型时出现的KeyError异常(如果该字段不存在于数据中)。确保
db_column参数适用于EmbeddedModel字段。将
EmbeddedModelField的搜索索引类型和PolymorphicEmbeddedModelField值从embeddedDocuments更正为document。修复了未初始化数据库连接时出现的
transaction.atomic()错误。弃用了
django_mongodb_backend.utils.parse_uri()方法。未来发布中已删除此方法。
版本 5.2.1
Django MongoDB后端 v5.2.1发布包含以下功能、改进和修复:
添加了对在
DATABASES["HOST"]键中指定连接字符串的支持,而不是使用django_mongodb_backend.utils.parse_uri()方法。要学习;了解更多信息,请参阅《配置数据库连接》指南中的自动配置数据库设置。指示添加或删除搜索索引的迁移操作等待,直到该操作在服务器上完成,这可以防止按顺序运行多个操作时发生冲突。
配置使用以下操作符的简单查询以使用
$match而不是$expr,从而允许它们使用索引:$eq$in$and$or$gt$gte$lt$lte
版本 5.2.0
Django MongoDB 后端 v5.2.0 是首次正式发布(GA)版本。要学习有关 GA 功能的更多信息,请参阅Django MongoDB 后端现已普遍可用博客文章。
版本 5.2.0beta 3
警告
重大更改
Django MongoDB后端 v5.2.0beta 3发布引入了以下破坏性变更 (breaking change):
删除对非字符串字段的模式匹配查找的支持。以前,这些查找使用
$toString操作符转换其输入。这会导致性能问题,因为MongoDB在运行查询时无法使用索引。
版本 5.2.0beta 2
警告
重大更改
此版本发布了以下破坏性变更 (breaking change):
在表单和模型验证中将
django.db.models.SmallIntegerField和django.db.models.PositiveSmallIntegerField值限制为 32 位。删除对数据库缓存的支持。这可以防止破坏数据库的攻击者使用 pickle 编码的缓存值在应用程序服务器上运行任意命令。
Django MongoDB后端 v5.2.0beta 2发布包括以下功能、改进和修复:
添加对MongoDB Search 查询的支持。要学习更多,请参阅运行 MongoDB Search 查询指南。
添加了对
EmbeddedModelArrayField值的子查询支持。要学习;了解更多信息,请参阅《指定查询》指南中的“查询嵌入式模型数组值”。将
options参数添加到django_mongodb_backend.utils.parse_uri()方法。添加对数据库事务的支持。要学习;了解更多信息,请参阅 事务和会话指南。
新增
PolymorphicEmbeddedModelField和PolymorphicEmbeddedModelArrayField字段,用于存储可属于多个模型类的模型实例或模型实例列表。要学习;了解更多信息,请参阅创建模型指南中的存储多态嵌入式模型数据。添加 GeoDjango支持。要学习;了解更多信息,请参阅《地理空间数据建模》指南。
更新
QuerySet.explain()以返回可解析为JSON 的字符串。修复了
IntegerField和PositiveBigIntegerField字段的唯一约束生成问题,该字段错误地允许大于 32 位的重复值。您必须重新创建现有的唯一约束才能使用$type: long而不是int。将以下字段作为
bson.int64.Int64值发送到MongoDB ,这修复了对小于 32 位的值的唯一约束:IntegerFieldBigIntegerFieldPositiveIntegerFieldPositiveBigIntegerFieldDurationField
通过删除服务器端分块的下限来提高
QuerySet性能。通过将一些简单条件从
$match阶段推送到$lookup阶段,提高使用$lookup聚合阶段的连接操作的性能。
版本 5.2.0beta 1
Django MongoDB后端 v5.2.0beta 1发布包括以下功能、改进和修复:
添加用于存储模型实例列表的
EmbeddedModelArrayField字段。要学习;了解更多信息,请参阅创建模型指南中的存储嵌入式模型数组数据。修复了使用数据库转换器加载具有 null
ArrayField值和base_field的模型时发生的崩溃。
版本 5.2.0beta 0
警告
重大更改
此版本发布了以下破坏性变更 (breaking change):
将支持的最低PyMongo版本从 4.6 增加到 4.7。
删除
django_mongodb_backend.utils.parse_uri()的conn_max_age参数。Django MongoDB后端现在默认使用持久连接。
Django MongoDB后端 v5.2.0beta 0发布包括以下功能、改进和修复:
5.1 中的新增功能
本部分列出了以下补丁版本中引入的更改:
版本 5.1.0beta 4
警告
重大更改
此版本发布了以下破坏性变更 (breaking change):
删除对数据库缓存的支持。这可以防止破坏数据库的攻击者使用 pickle 编码的缓存值在应用程序服务器上运行任意命令。
Django MongoDB后端 v5.1.0beta 4发布包括以下功能、改进和修复:
修复了加载具有 null
ArrayField值的模型以及base_field使用数据库转换器时发生的崩溃。通过删除服务器端分块的下限来提高
QuerySet性能。
版本 5.1.0beta 3
Django MongoDB后端 v5.1.0beta 3发布包括以下功能、改进和修复:
添加对字段自定义查找和转换的支持
EmbeddedModelField修复使用
Trunc数据库函数的tzinfo参数的查询结果新增对
QuerySet.dates()和QuerySet.datetimes()方法的支持修复了使用数据库转换器的嵌入式模型字段加载
QuerySet结果的问题
版本 5.1.0beta 2
警告
重大更改
此版本发布了以下破坏性变更 (breaking change):
将
ArrayField的size参数重命名为max_size。size参数现在用于实施固定长度数组。
Django MongoDB后端 v5.1.0beta 2发布包括以下功能、改进和修复:
添加对数据库缓存的支持。此支持后来在 v5.1.4 中删除。
修复当文档键顺序与模型字段顺序不匹配时
QuerySet.raw_aggregate()字段初始化的问题。
版本 5.1.0beta 1
警告
重大更改
此版本发布了以下破坏性变更 (breaking change):
ObjectIdAutoField不再接受整数值
Django MongoDB后端 v5.1.0beta 1发布包括以下功能、改进和修复:
新增对保存嵌套嵌入式模型表单的支持
修复持久数据库连接
添加对异步操作的支持
将
db_name参数添加到django_mongodb_backend.utils.parse_uri()方法添加
django_mongodb_backend.routers.MongoRouter路由器,以确保 Django MongoDB 后端不会为嵌入式模型创建集合,并且dumpdata命令不包含嵌入式模型
版本 5.1.0beta 0
Django MongoDB后端 v5.1.0beta 0 是初始公开预览发布。要学习有关公共预览功能的更多信息,请参阅官方 Django MongoDB 后端现已推出公共预览版博客文章。