MongoDB 3.6 发行说明

在本页面

Minor Releases

3.6.19-2020 年 7 月 23 日

Issues Fixed:

3.6.18-2020 年 5 月 1 日

Issues fixed:

Note

已解决的问题包括解决以下常见漏洞和披露(CVE)的问题:

3.6.17-2020 年 1 月 27 日

Issues fixed:

3.6.16-2019 年 12 月 6 日

Issues fixed:

3.6.15-2019 年 11 月 6 日

Issues fixed:

3.6.14-2019 年 8 月 26 日

Issues fixed:

Note

已解决的问题包括解决以下常见漏洞和披露(CVE)的问题:

3.6.13-2019 年 6 月 10 日

Issues fixed:

Note

已解决的问题包括解决以下常见漏洞和披露(CVE)的问题:

3.6.12-2019 年 4 月 8 日

Issues fixed:

3.6.11-2019 年 3 月 1 日

Issues fixed:

3.6.10-2019 年 1 月 22 日

Issues fixed:

3.6.9-2018 年 11 月 16 日

Issues fixed:

3.6.8-2018 年 9 月 19 日

Issues fixed:

3.6.7-2018 年 8 月 25 日

Issues fixed:

3.6.6-2018 年 7 月 10 日

Issues fixed:

3.6.5-2018 年 5 月 29 日

Issues fixed:

3.6.4-2018 年 4 月 13 日

Issues fixed:

3.6.3-2018 年 2 月 23 日

Issues fixed:

3.6.2-2018 年 1 月 10 日

Issues fixed:

3.6.1-2017 年 12 月 26 日

Issues fixed:

Security

默认绑定到 localhost

从 MongoDB 3.6 开始,MongoDB 二进制文件mongodmongos默认绑定到localhost。从 MongoDB 版本 2.6 到 3.4,默认情况下,只有来自正式 MongoDB RPM(Red Hat,CentOS,Fedora Linux 和衍生产品)和 DEB(Debian,Ubuntu 和衍生产品)软件包的二进制文件会绑定到localhost。要了解有关此更改的更多信息,请参见Localhost 绑定兼容性更改

MONGODB-CR Deprecation

从 MongoDB 3.6 开始,不推荐使用MONGODB-CR身份验证机制。如果尚未将MONGODB-CR身份验证架构升级到 SCRAM,请参见升级到 SCRAM

Authentication Restrictions

为了将数据库用户连接限制为指定的 IP 地址,将authenticationRestrictions参数添加到以下内容:

Commands Methods
createUser db.createUser()
updateUser db.updateUser()
createRole db.createRole()
updateRole db.updateRole()

其他安全增强功能

Aggregation

从 MongoDB 3.6 开始,以下功能可用。

更富有表现力的$ lookup

$lookup通过允许对联接的集合进行变量指定和管道执行,增加了对指定多个联接条件以及不相关的子查询的支持。

有关详细信息,请参见联接条件和不相关的子查询$lookup语法。

新的聚集阶段

MongoDB 3.6 添加了以下新的聚合管道阶段:

Operator Description
$currentOp 返回包含有关mongod实例上的活动和/或休眠操作的信息的文档流。使用新的聚合助手db.aggregate()
$listSessions 列出config数据库中system.sessions集合中的服务器会话。使用新的聚合帮助器db.aggregate()
$listLocalSessions 列出服务器缓存在内存中的服务器会话。

新的汇总运算符

Operator Description
$arrayToObject 将键值对数组转换为文档。
$objectToArray 将文档转换为代表键值对的文档数组。
$mergeObjects 将多个文档合并为一个文档。
$dateFromString 将日期/时间字符串转换为日期对象。
$dateFromParts 给定日期的组成部分,构造一个 BSON Date 对象。
$dateToParts 返回包含日期组成部分的文档。

新的聚合助手

MongoDB 3.6 添加了一个助手db.aggregate(),以执行不依赖于基础集合的聚合,例如以$currentOp$listLocalSessions开头的聚合。

新的汇总变量

REMOVE允许有条件地排除字段。

New Options

aggregate命令和db.collection.aggregate()方法支持以下新选项:

Note

hint不适用于$lookup$graphLookup阶段。

支持时区

MongoDB 3.6 将对时区的支持添加到汇总日期运算符

数组更新运算符增强

arrayFilters

以下命令和方法可以接受arrayFilters参数,以指定要在数组字段中修改的元素:

Commands Methods
findAndModify db.collection.findOneAndUpdate()

db.collection.findAndModify()
update db.collection.updateOne()
db.collection.updateMany()
db.collection.update()
db.collection.bulkWrite() updateOne 和 updateMany 操作
Bulk.find.arrayFilters()用于Bulk()操作方法updateOne()update()

多元素阵列更新

MongoDB 3.6 添加了以下新的位置运算符,用于对数组和嵌套数组的更新操作:

用于推送的负数组索引位置

push更新运算符的$position修饰符可以接受负数组索引值,以指示从数组末尾开始的位置。

3.6 兼容的驱动程序

以下驱动程序与 MongoDB 3.6 兼容:

Java 3.6+

Python 3.6+
C 1.9
C#2.5
Node 3.0+
Ruby 2.5
Perl 2.0
PHPC 1.4+
Scala 2.2+

DNS 构造的种子列表 mongodb srv

除标准连接格式外,3.6 驱动程序还支持 DNS 构造的种子列表。有关更多信息,请参见DNS 种子列表连接格式

Change Streams

MongoDB 3.6 支持针对具有副本集分片的副本集和分片集群打开变更流。

更改流允许应用程序访问实时数据更改,而不会带来复杂性和拖尾oplog的风险。应用程序可以使用变更流来订阅集合中的所有数据变更,并对这些变更做出响应。

您可以使用db.collection.watch()方法从任何 3.6 系列驱动程序打开更改流。有关使用的完整说明,请参见首选驱动程序的文档。

有关更多信息,请参见Change Streams

Important

要使用变更流,必须将featureCompatibilityVersion设置为“ 3.6”。有关更多信息,请参见View FeatureCompatibilityVersionsetFeatureCompatibilityVersion

Client Sessions

Causal Consistency

为了提供因果一致性,MongoDB 3.6 在client sessions中启用了causal consistency。因果一致的 Client 端会话表示读取和“确认”写入操作的关联序列具有因果关系,这种因果关系由它们的 Sequences 反映出来。Client 端应用程序必须确保一次只有一个线程在 Client 端会话中执行这些操作。

应用程序可以启动client session并将操作与特定会话相关联。应用程序必须确保一次只有一个线程在 Client 端会话中执行这些操作。

Important

要使用 Client 端会话:

Retryable Writes

Important

对于可重试的写入:

从 MongoDB 3.6 开始,副本集和分片群集上的某些公认的写操作是“可重试”的,以提供对瞬态网络错误或副本集选择的处理。

通过可重试的写入,MongoDB 驱动程序在遇到网络错误或遇到副本集故障转移时自动重试这些操作,在此期间副本集没有主副本。要为 3.6 驱动程序启用可重试写入,请参见retryWrites

由于仅尝试一次重试,因此可重试功能可以帮助解决瞬态网络错误,但不能解决持久性网络错误。

有关可重试写入的更多信息,请参见Retryable Writes

mongo Shell 更改

MongoDB 3.6 将新的命令行选项--retryWrites添加到mongo shell。该选项在mongo shell 中启用Retryable Writes

以下新方法已添加到mongo shell 中的Mongo()连接对象:

Server Sessions

MongoDB 的服务器会话或逻辑会话是client sessions用于支持Causal Consistencyretryable writes的基础框架。

Important

应用程序使用client sessions连接服务器会话。

服务器会话可用于独立的mongod实例,副本集和分片群集。

服务器会话命令

从 3.6 开始,MongoDB 驱动程序将所有操作与服务器会话相关联,但未确认的写入除外。如果部署强制执行身份验证/授权,则服务器会话将与经过身份验证的用户关联。

以下命令可用于列出,Management 和终止整个 MongoDB 集群中的服务器会话:

Commands Descriptions
endSessions 使指定的服务器会话到期。
killAllSessions 杀死所有服务器会话。
killAllSessionsByPattern 杀死所有与指定模式匹配的服务器会话。
killSessions 终止指定的服务器会话。
refreshSessions 刷新空闲服务器会话。
startSession 开始新的服务器会话。

Parameters

以下新参数可用于服务器会话:

Aggregation Stages

为了支持服务器会话,MongoDB 3.6 添加了以下新的聚合管道阶段:

Operator Description
$listSessions 列出config数据库中system.sessions集合中的服务器会话。
$listLocalSessions 列出服务器缓存在内存中的服务器会话。使用新的聚合帮助器db.aggregate()

General

serverStatus返回有关logicalSessionRecordCache的信息。

Command Options

从 3.6 开始,MongoDB 驱动程序将所有操作与服务器会话相关联,但未确认的写入除外。以下选项可用于所有命令以支持与服务器会话的关联:

Important

mongo shell 和驱动程序将这些选项分配给会话中的命令。

Option Type Description
lsid Document 指定与命令关联的会话的唯一 ID 的文档。如果指定了txnNumber,则需要lsid
txnNumber 64-bit integer 严格增加的非负数,用于在命令会话中唯一标识该命令。


如果指定,该命令还必须包含lsid选项。

对于采用语句数组的deleteinsertupdate命令,还可以使用以下选项:

Important

不要手动设置stmtIds。 MongoDB 将stmtIds设置为严格增加的非负数。

Option Type Description
stmtIds 32 位整数数组 在写命令中唯一标识其各自写操作的数字数组。

JSON Schema

MongoDB 3.6 使用 JSON 模式将$jsonSchema运算符添加为支持document validation。有关详细信息,请参见$jsonSchema

要使用$jsonSchema,必须将featureCompatibilityVersion设置为“ 3.6”。

Replica Sets

Sharded Clusters

要将现有的分片独立实例转换为分片副本集,请参见将分片独立版转换为分片副本集

General Enhancements

MongoDB 罗盘包装

MongoDB Server 下载与特定于平台的installation script打包为MongoDB 罗盘社区版打包在一起。此脚本在 MongoDB 服务器安装过程中安装 MongoDB Compass。

Collection Identifier

集合具有不变的unique identifierfeatureCompatibilityVersion必须设置为"3.6"

新查询运算符

MongoDB 3.6 添加了以下新的查询运算符:

Removed Operators

MongoDB 3.6 删除了弃用的$pushAll更新运算符。有关更多信息,请参见删除$ pushAll 更新运算符

Indexes

Commands

有线协议和压缩

Read Concern

有关更多信息,请参见禁用多数阅读关注

FTDC

MongoDB 3.6 在mongos中添加了对 Diagnostics Capture(也称为FTDC)的支持。 [1]在以前的版本中,此功能仅适用于mongod。参见Diagnostic Parameters

Note

FTDC 默认情况下处于启用状态。

[1] MongoDB 3.4.14 还添加了对 FTDC 的mongos支持。

Additional Enhancements

MongoDB 3.6 包括以下增强功能:

影响兼容性的更改

某些更改可能会影响兼容性,并且可能需要用户采取措施。有关兼容性更改的详细列表,请参见MongoDB 3.6 中的兼容性更改

Upgrade Procedures

Feature Compatibility Version 3.4

要升级,3.4 实例必须将featureCompatibilityVersion设置为 3.4. 要检查版本:

db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

有关验证和设置featureCompatibilityVersion的特定详细信息以及有关升级的其他先决条件/注意事项的信息,请参阅各个升级说明:

如果您需要有关升级到 3.6 的指导,请MongoDB 提供主要版本升级服务帮助确保平稳过渡而不会中断您的 MongoDB 应用程序。

Download

要下载 MongoDB 3.6,请转到MongoDB 下载中心

3.6.3 中的已知问题

3.6.2 中的已知问题

3.6.1 中的已知问题

3.6.0 中的已知问题

报告问题

要报告问题,请参阅https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports,以获取有关如何为 MongoDB 服务器或相关项目之一提交 JIRA 票证的说明。

首页