MongoDB 1.8是一个标准的增量产品版本,可作为MongoDB 1.6的直接替代品,但以下情况除外:
mapReduce
命令在1.8中进行了更改,导致与以前的版本不兼容。mapReduce
不再生成临时集合(因此keepTemp
已被删除)。现在,您必须始终提供的值out
。请参阅文档中的
out
字段选项mapReduce
。如果您使用MapReduce,这也可能意味着您需要最新版本的客户端驱动程序。在升级之前,请通读所有发行说明,并确保所有更改都不会影响您的部署。
mongod
¶mongod
实例。mongod
二进制文件替换现有的二进制文件。1.6.x辅助文件不能从1.8.x主文件复制。
因此,要升级副本集,必须先替换所有辅助副本,然后替换主副本。
例如,假设您有一个副本集,其中包含一个主副本,一个仲裁者和几个辅助副本 。要升级套件,请执行以下操作:
对于仲裁人:
更改配置(可选),以防止选择新的主数据库。
当您开始关闭集合的成员时,可能会选择一个新的主要数据库。为避免这种情况,您可以0
在升级之前为所有备用服务器设置优先级,然后再将其更改。为此:
记录您当前的配置。运行rs.config()
结果并将其粘贴到文本文件中。
更新您的配置,使所有第二优先级都具有优先级0
。例如:
对于每个中学:
如果更改了配置,请将其更改回其原始状态:
关闭主服务器(最终的1.6服务器),然后从MongoDB下载页面使用1.8.x二进制文件重新启动它。
关闭平衡器:
对于每个碎片:
mongod
进程,请关闭它,然后从MongoDB下载页面使用1.8.x二进制文件重新启动它。对于每个mongos
:
mongos
过程。对于每个配置服务器:
打开平衡器:
如果出于任何原因必须回到1.6,请按照上述相反的步骤进行操作。请注意,在1.8(最大大小已增加到16MB)上运行时,您没有插入任何大于4MB的文档。如果有,则服务器尝试读取这些文档时会出现错误。
MongoDB现在支持预写日记功能,以促进快速崩溃恢复和存储引擎的持久性。启用日记功能后,mongod
可以在崩溃后快速重新启动a,而无需修复collections。聚合框架使聚合成为可能
稀疏索引是仅包含包含索引中指定字段的文档的索引。缺少该字段的文档将根本不会出现在索引中。这可以减少显著索引大小为仅包含的文件中的一个子集领域的指标集。
当查询仅选择索引包含的字段时,涵盖索引使MongoDB可以完全从索引回答查询。
该mapReduce
命令支持启用增量更新现有集合的新选项。以前,MapReduce作业可以输出到临时集合或命名的永久集合,然后将其用新数据覆盖。
现在,您可以使用几个选项来输出MapReduce作业:
有关更多信息,请参阅文档中的out
字段选项
mapReduce
。
$rename
运算符允许重命名文档中的字段。db.eval()
不阻止。mongostat --discover
选项$elemMatch
嵌入式数组中的原语。$pull
适用于数组中的基元。getLastErrorDefaults
用于副本集。