MongoDB 3.6的一些新特性介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jjwen/article/details/80020397
一、安全方面:
 1、bind_ip
为了安全考虑,MongoDB 3.6中bind_ip的默认值为localhost,可通过启动命令或者配置文件绑定需访问的ip地址
 
2、MONOGDB-CR认证
建议在3.6版将认证机制MONOGDB-CR更新为SCRAM,后续的版本将不再支持MONOGDB-CR
 
3、认证限制
① 在db.createuser()、db.updateuser() 、db.createrole()、db.updaterole()四个命令中增加authenticationRestrictions了参数,用来控制客户端的ip和客户端访问服务端的IP。
② 在使用TLS/SSL时,添加了opensslcipherconfig参数控制openssl密码。
③ 在服务端认证开启的情况下,可以控制用户只能发出一个游标。
④ 增加了converttocapped方法,可将普通集合转换成固定集合。
 
二、聚合
1、$lookup 在3.6中配合fron、let、pipeline、as可以更好的做连接查询和子查询,具体的用法可参考官网案例, 点击这里
2、增加了如下的聚合操作符:
     $arrayToObject  将数组转换成文档
     $objectToArray  将文档转换成数组
     $mergeobject 合并文档
     $datefromstring 根据字符串条件转换date
     $datefromparts 根据给定条件组成date
     $datetoparts 将date转换成一个个条件
3、remove,新的聚合变量,用以删除聚合中符合制定条件的字段
4、aggregate命令和db.collention.aggregate()支持hint和comment两个新选项。
5、聚合操作支持Time Zones
 
三、数组更新 
1、findAndModify和update支持通过设定arrayFilters参数来修改数组中的指定成员。
2、数组更新
     可通过$[]操作对数组中的所有元素全量更新。 
     可根据arrayFilters条件对数组全量更新。
3、更新数组操作支持负数索引,来指定数组中倒数的位置
 
四、兼容MongoDB3.6的各语言版本
Java 3.6
Python 3.6
C 1.9
Node 3.0
C# 2.5
Ruby 2.5
PHP 1.4
 
五、Change Stream
    Change Stream是3.6的新特性,允许应用程序实时访问数据的变化,可以用来查询集合上的所有数据的更改,以便及时作出相应,利用Change Streams这个功能,应用可以实现构建实时数据同步。
使用注意事项:
1、必须是复制集或者分片。
2、必须是wiretiger存储引擎,且是协议复制版本pv1。
3、featureCompatibilityVersion参数必须设置成 “3.6”。
 
六、JSON SCHEMA
$jsonschema 是MongoDB3.6新增的操作符,
可在建表的时候用来添加约束条件,譬如可限制字段的类型、长度、范围、是否必须等。
 
七、复制集
1、废弃了复制集协议protocol version 0(pv0)。
2、添加了replSetResizeOplog 命令,WiredTiger存储引擎可以动态调整oplog的大小了。
3、添加了catchUpTakeoverDelayMillis配置选项,指定节点在发起选举之前等待的时间,默认30秒,如超过这个时间该节点的数据仍是最新的,且当前主节点在追赶他,则立刻启动选举。
4、对于使用协议版本1(pv1)的复制集,如果仲裁人发现与候选人有相同或更高优先级的节点在,他们将在选举中投票反对票。
5、添加oplogInitialFindMaxSeconds参数来调整复制集的成员在数据同步期间使用find命令等待的时间。默认60s
6、增加了waitForSecondaryBeforeNoopWriteMS参数,以指定如果afterClusterTime大于oplog的最近应用时间,则secondary服务器必须等待多长时间。默认10毫秒。
7、在复制集有成员初始化的时候,支持renamecollection(),converttocapped,$out,Map-reduce
8、支持在线添加认证。
 
八、分片集群
1、添加了ShardingTaskExecutorPoolMaxConnecting参数,控制mongos将连接添加到mongod的速率,默认是2。
2、添加了orphanCleanupDelaySecs,以配置主片在删除已迁移快前的最小延迟。
3、config数据库中的config.system.sessions表可以做分片了。
 
九、索引
1、索引可以覆盖嵌套字段的查询。
2、如某字段变成多键字段,多键索引可以覆盖非数组键的查询。
3、索引名中不能包含*符号。
 
十、Retryable Writes
    Retryable Writes重试是3.6新增的特性,对于可重试写入,MongoDB驱动程序会在遇到网络错误或者复制集故障转移的时候重试这些操作。
使用重试需注意下述事项。
1、 重试只有复制集和分片可用,
2、客户端需使用3.6以上的版本,并开启featureCompatibilityVersion参数
3、重试只会执行一次,且执行期间没有主库。
4、需要wiretiger或存储引擎。
 
十一、其它
1、dropdatabase 命令会等待drop表命令传输到大部分复制集成员后再执行。
2、对于在复制集合和分片上运行的命令,其返回文档包括operationtime和$clustertime
3、废弃getpreverror命令。

参考文档:https://docs.mongodb.com/master/release-notes/3.6/#new-aggregation-stages

猜你喜欢

转载自blog.csdn.net/jjwen/article/details/80020397