MongoDB 5.0 正式发布,该版本部分更新内容如下:
时间序列集合
- MongoDB 5.0 引入了时间序列集合,它有效地存储了一段时期内的测量序列。与普通集合相比,在时间序列集合中存储时间序列数据可以提高查询效率,并减少数据和索引的磁盘使用。
聚合
-
新的聚合操作符
MongoDB 5.0 引入了以下聚合操作:
$count
:$count
在现有管道$group
阶段和新的 MongoDB 5.0$setWindowFields
阶段中使用时,提供所有文档的计数。$dateAdd
: 将一个Date
对象按指定的时间单位递增。$dateDiff
: 返回两个日期之间的差异。$sampleRate
: 添加$sampleRate
方法,以给定的速度从管道中概率性地选择文档。$rand
: 每次调用$rand
方法时,都会生成一个0到1之间的随机浮点数。新的$sampleRate
操作是基于$rand
的。
窗口操作符
- MongoDB 5.0 引入了
$setWindowFields
管道阶段,允许你在一个集合中的指定跨度的文档上执行操作,称为窗口。该操作根据所选择的窗口操作符返回结果。
一般聚合的改进
-
$expr
操作符:比较运算符使用索引从 MongoDB 5.0 开始,放在
$expr
操作符中的$eq
、$lt
、$lte
、$gt
和$gte
操作符可以使用索引来提高性能。 -
$ifNull
表达式接受多个输入表达式从 MongoDB 5.0 开始,在返回一个替换表达式之前,你可以为
$ifNull
表达式指定多个输入表达式。 -
聚合的
let
选项从 MongoDB 5.0 开始,
aggregate
命令和db.collection.aggregate()
辅助方法有一个let
选项,用于指定一个可以在聚合管道的其他地方使用的变量列表。这允许你通过将变量与查询文本分开来提高命令的可读性。 -
$lookup
阶段:简洁的相关子查询从 MongoDB 5.0 开始,聚合管道
$lookup
阶段支持简明的相关子查询,改善集合之间的连接。 -
变更事件输出
从 MongoDB 5.0 开始,变更事件包含字段
updateDescription.truncatedArrays
来记录数组的截断。
索引
-
删除了
geoHaystack
索引和geoSearch
命令MongoDB 5.0 删除了废弃的
geoHaystack
索引和geoSearch
命令。使用带有$geoNear
的 2d 索引或支持的 geospatial 查询操作符来代替。将你的 MongoDB 实例升级到 5.0 并将
featureCompatibilityVersion
设置为 5.0 将删除任何先前存在的geoHaystack
索引。 -
新的错误信息
db.collection.createIndex()
和db.collection.createIndexes()
操作在选项指定不正确时有新的错误信息。 -
中断索引构建
如果副本集中的一个节点在索引构建过程中完全关闭或回滚,索引构建的进度现在会被保存到磁盘上。当服务器重新启动时,索引创建将从保存的位置恢复。
-
reIndex
行为改变从 MongoDB 5.0 开始,
[reIndex](<https://docs.mongodb.com/v5.0/reference/command/reIndex/#mongodb-dbcommand-dbcmd.reIndex>)
命令和[db.collection.reIndex()](<https://docs.mongodb.com/v5.0/reference/method/db.collection.reIndex/#mongodb-method-db.collection.reIndex>)
shell 方法只能在独立实例上运行 。
安全
-
支持配置 TLS 1.3 密码套件
MongoDB 5.0引入了opensslCipherSuiteConfig参数,以便在使用TLS 1.3加密时,能够配置OpenSSL所支持的密码套件。