MongoDB 2.6的发布说明
2014年4月8日
MongoDB 2.6现已推出。主要功能包括聚合增强、文本搜索集成、查询引擎改进、新的写操作协议和安全增强。
主要变化
MongoDB中的以下更改影响标准版和企业版:
聚合增强功能
聚合管道增加了通过返回光标或将输出写入集合来返回任何大小的结果集的能力。此外,聚合管道支持变量,并添加新操作来处理集合和编辑数据。
db.collection.aggregate()
现在返回一个光标,该光标使聚合管道能够返回任何大小的结果集。- 聚合管道现在支持
explain
操作,以帮助分析聚合操作。 - 聚合现在可以使用更高效的基于外部磁盘的排序过程。
- 新的管道阶段:
- 新或修改的运算符:
文本搜索集成
现在默认情况下启用文本搜索,查询系统,包括聚合管道$match
阶段,包括$text
运算符,用于解析文本搜索查询。
MongoDB 2.6包含更新的文本索引格式,并弃用text
命令。
插入和更新改进
- 对于写入操作,MongoDB保留文档字段的顺序,但以下情况除外:
_id
字段始终是文档中的第一个字段。- 包含
renaming
字段名称的更新可能会导致文档中字段的重新排序。
- 新的或增强的更新运算符:
- 用于插入和更新操作的乘法增量的
$mul
运算符。
另见:
新的写入操作协议
一种新的写入协议将写入操作与写入问题集成在一起。该协议还为批量操作提供了更好的支持。
MongoDB 2.6添加了insert
、update
和delete
的写入命令,这为改进的批量插入提供了基础。所有官方支持的MongoDB驱动程序都支持新的写入命令。
mongo
现在,外壳程序包含执行批量写入操作的方法。请参阅Bulk()
以获取更多信息。
另见:
适用于Windows的MongoDB的MSI软件包
MongoDB现在分发适用于Microsoft Windows的MSI软件包。这是在Windows下安装MongoDB的推荐方法。
安全改进
MongoDB 2.6通过改进的SSL支持、基于x.509的身份验证、具有更精细控制的改进授权系统以及集中的凭据存储和改进的用户管理工具,增强了对安全部署的支持。
具体而言,这些变化包括:
- 一种新的授权模型,提供了创建自定义用户定义角色的能力,并能够以集合级粒度指定用户特权。
- 全局用户管理,将所有用户和用户定义的角色数据存储在
admin
数据库中,并提供一套新的命令来管理用户和角色。 - x.509证书身份验证用于客户端身份验证以及分片集群和/或副本集成员的内部身份验证。x.509身份验证仅适用于使用SSL的部署。
- 增强的SSL支持:
- MongoDB默认禁用http接口,限制网络曝光。
另见:
查询引擎改进
- MongoDB现在可以使用索引交集来满足多个索引支持的查询。
- 索引过滤器,以限制哪些索引可以成为查询的获胜计划。
- 查询计划缓存方法,用于查看和清除查询优化器缓存的查询计划。
- MongoDB现在可以将
count()
与hint()
。有关详细信息,请参阅count()
。
改进
地理空间增强
- 2dsphere索引版本2。
- 支持
MultiPoint
、MultiLineString
、MultiPolygon
和GeometryCollection
。 - 支持
$or
表达式中的地理空间查询子句。
另见:
索引构建增强功能
重新启动后自动重建中断的索引构建。
- 如果独立或主实例在索引构建期间终止而不进行干净的关机,
mongod
现在会在实例重新启动时重新启动索引构建。如果实例干净地关闭或用户杀死索引构建,中断的索引构建不会在服务器重新启动时自动重新启动。 - 如果辅助实例在索引构建期间终止,当实例重新启动时,它们实例现在将重新启动中断的索引构建。
要禁用此行为,请使用
--noIndexBuildRetry
命令行选项。- 如果独立或主实例在索引构建期间终止而不进行干净的关机,
ensureIndex()
现在包装一个新的createIndex
命令。不建议使用
dropDups
选项,ensureIndex()
和createIndex
。
另见:
增强的分片和复制管理
- 新的
cleanupOrphaned
命令,用于从碎片中删除孤立文档。 新的
mergeChunks
命令,以组合位于单个碎片上的连续块。请参阅mergeChunks
和Merge块在碎片集群中。分别从主数据库和辅助数据库的角度提供副本集状态格式化报告的新方法
rs.printReplicationInfo()
和 新rs.printSlaveReplicationInfo()
方法。
配置选项YAML文件格式
除了之前的配置文件格式外,MongoDB 2.6还支持基于YAML的配置文件格式。有关更多信息,请参阅配置文件的文档。
运营变更
储存
usePowerOf2Sizes
现在是所有新集合的默认分配策略。与文档总大小相比,新的分配策略使用更多的存储空间,但随着时间的推移,存储碎片化程度更低,存储容量规划更可预测。
要使用之前的完全合适的分配策略:
对于特定集合,请使用
collMod
将usePowerOf2Sizes
设置为false
。对于整个
mongod
实例上的所有新集合,setnewCollectionsUsePowerOfnewCollectionsUsePowerOf2Sizes
为false
。新合集包括:在初始同步期间创建,以及由
mongorestore
和mongoimport
工具,通过使用--repair
选项以及已弃用的restoreDatabase
命令运行mongod
。
看/核心/存储有关MongoDB存储系统的更多信息。
网络
- 删除了
maxIncomingConnections
和mongos
向上限制。以前的版本将最大可能的maxIncomingConnections
设置上限限制为20,000
连接。 - 一个
mongos
实例的连接池可以由多个MongoDB服务器使用。这可以减少大量工作负载所需的连接数量,并减少分片群集中的资源消耗。 - 现在,C ++驱动程序使用命令而不是 监视副本集运行状况 。这允许C ++驱动程序支持需要身份验证的系统。
isMaster
replSetGetStatus
- 用于指定时间限制的命令的新选项
cursor.maxTimeMS()
和相应maxTimeMS
选项。
工具的改进
mongo
shell支持全局/etc/mongorc.js
文件。- 所有MongoDB可执行文件现在都支持
--quiet
选项,以抑制除错误消息外的所有日志输出。 mongoimport
使用输入文件名,如果没有文件扩展名,则使用没有-c
或--collection
规范的集合名称。mongoexport
现在可以使用--skip
和--limit
限制导出数据,以及使用--sort <mongoexport
选项在导出中订购文档。mongostat
可以支持使用--rowcount
(-n
)和--discover
选项来生成指定数量的输出行。- 为
data_numberlong
添加严格的模式表示形式,供mongoexport
和mongoimport
。
MongoDB企业功能
以下更改是MongoDB企业版特有的:
MongoDB Enterprise for Windows
SNMP的支持。
MongoDB Enterprise for Windows不包括对身份验证的LDAP支持。然而,MongoDB Enterprise for Linux支持在ActiveDirectory服务器上使用LDAP身份验证。
MongoDB Enterprise for Windows包括OpenSSL版本1.0.1g。
审计
MongoDB Enterprise增加了mongod
和mongos
实例的审计功能。有关详细信息,请参阅审计。
LDAP对身份验证的支持
MongoDB Enterprise支持用户的代理身份验证。这允许管理员配置MongoDB集群,通过将身份验证请求代理到指定的轻量级目录访问协议(LDAP)服务来验证用户。有关详细信息,请参阅使用SASL和LDAP与OpenLDAP进行身份验证,以及使用ActiveDirectory使用SASL和LDAP进行身份验证。
MongoDB Enterprise for Windows不包括对身份验证的LDAP支持。然而,MongoDB Enterprise for Linux支持在ActiveDirectory服务器上使用LDAP身份验证。
MongoDB不支持在包含2.4版和2.6版碎片的混合分片集群部署中进行LDAP身份验证。有关升级说明,请参阅将MongoDB升级到2.6。
扩展的SNMP支持
MongoDB Enterprise大大扩展了其SNMP支持,为db.serverStatus()
提供的几乎所有指标提供SNMP访问权限。
另见:
其他信息
影响兼容性的变化
2.6中的某些更改可能会影响兼容性,可能需要用户进行操作。
Mongo 2.6 shell程序提供了 db.upgradeCheckAllDBs()方法对其中一些更改的升级准备情况进行检查。
有关兼容性更改的详细列表,请参阅MongoDB 2.6中的兼容性更改。
另见:
所有向后不兼容的更改(JIRA) AND "Backwards Compatibility" in ( "Minor Change"%2C"Major Change" ) ORDER BY votes DESC%2C issuetype DESC%2C key DESC)。
升级流程
有关完整的升级说明,请参阅将MongoDB升级到2.6。
下载
要下载MongoDB 2.6,请转到下载页面。
其他资源
译者:韩鹏帅
参见