MongoDB 4.4 最新特性介绍
MongoDB 4.4就要发布了,本文就来介绍一些这个版本的一些最新的功能。
MongoDB 4.4中改进的功能
对冲读取
MongoDB可以并行处理读请求,然后从最有效的节点来获取结果,从而可以减少应用的延时。
可定义的共享秘钥
在scale过程中修改数据分布的时候会在共享秘钥中加入后缀。
镜像读取
这个功能可以对副本的cache预先warm,从而可以减少计划的维护或者outage的时候主选举消耗。
聚合增强
聚合增强有了很多方面的改进,包括定义和汇总聚合表达式,从不同的mongo collection中组合数据到一个结果中,字符串处理以及数组处理的新操作。下面是一些加强:
$out
$out现在可以把输出collection的结果到不同的数据库,而早期的版本只能输出到同一个数据库中。
$indexStats
$indexStats在新的版本中有了一些新的域,包括下面这些:
Building | 这是一个Boolean的flag,用来表示正在建立的索引 |
Spec | 每一个索引的规格文档 |
Shard | 分片的名字 |
$merge
$merge可以在要升级的同一个collection中输出。另外,可以在一个collection中数据并显示在pipeline上,比如$lookup。
$planCacheStates的改变
$planCacheStates现在可以同时在mongod和mongos instance上运行。另外,$planCacheStats在运行的时候有一个新的域我们称之为host域。PlanCache.list()是$planCacheStats聚合阶段的包装。
$collStats改变
$collStats在扩充文档中已经可以接收查询统计信息。另外Collection扫描有下面这些域:
域名字 | 描述 |
nonTailble | 一个64位整数,用来表示多个查询上的一个collection 扫描,它不使用tailable光标。 |
Total | 总计是执行查询的集合,它不适用tailable进行集合扫描 |
$unionWith聚合
MongoDB已经增加了一个$unionWith,这个功能统一了collection集,也就是说,它把从多个collection中得到的pipeline结果集合到一个中。
$unionWith语法
$unionWith有下面这些通用的语法:
cd{ $unionWith: { coll: "<collection>", pipeline: [ <stage1>, ... ] } }
$unionWith有一个简单的语法版本,可以用来包含一个collection中的所有文档:
{ $unionWith: "<collection>" } // include all documents from the specified collection
$accumulator聚合
$accumulator是MongoDB 4.4中的一个新的支持累加操作的功能。累加在文档管道进行时不该变状态的运算符。你可以使用$accumulator操作来执行MongoDB中不支持的JavaScript函数。$accumulator可以在下面管道的三个stage中发现:
- $bucket stage:只有输出文档包含不止一个文档输入。
- $group stage: specified_id输入文档并且为每一个特定grouping输出文档
- $bucketAuto stage:它把文档entries按照特定group number排序,也称之为buckets。
$accumulator的语法如下所示:
{ $accumulator:{ init: <code>, initArgs: <array expression>, // Optional accumulate: <code>, accumulateArgs: <array expression>, merge: <code>, finalize: <code>, // Optional lang: <string> }}
$function聚合
$function聚合定义了JavaScript函数的聚合。
$function操作可以用来定义MongoDB不支持的函数行为
$function的语法如下:
{ $function: { body: <code>, args: <array expression>, lang: "js" } }
别的MongoDB 4.4中支持的功能包括:writes concerns, 全局读,stream复制,可恢复的初始同步以及复合hash分片等。
Recent Comments