MongoDB 2.4 中的兼容性和索引类型更改

在本页面

在 2.4 中,MongoDB 包括两个与索引相关的新功能,升级到版本 2.4 的用户必须考虑这些索引,尤其是有关可能的降级路径的索引。有关降级的更多信息,请参见将 MongoDB 从 2.4 降级到以前的版本

新索引类型

在 2.4 中,MongoDB 添加了两个新的索引类型:2dspheretext。这些索引类型在 2.2 中不存在,并且对于每个数据库,创建2dspheretext索引将升级数据文件版本并使该数据库与 2.2 不兼容。

如果打算降级,则应始终删除所有2dspheretext索引,然后再移至 2.2.

您可以使用downgrade procedure降级这些数据库并在需要时运行 2.2,但是它将为所有受影响的数据库运行完整的数据库修复(与repairDatabase一样)。

索引类型验证

在 MongoDB 2.2 和更早版本中,您可以指定不存在的无效索引类型。在这种情况下,MongoDB 将创建一个升序(例如1)索引。无效索引包括由字符串指定的索引类型(不引用现有索引类型)以及1-1以外的所有数字。 [1]

在 2.4 中,创建任何无效索引将导致错误。此外,如果其包含的数据库具有任何无效的索引类型,则不能在集合上创建2dspheretext索引。 [1]

Example

如果您尝试在 MongoDB 2.4 中添加无效索引,如下所示:

db.coll.ensureIndex( { field: "1" } )

MongoDB 将返回以下错误文档:

{
"err" : "Unknown index plugin '1' in index { field: \"1\" }"
"code": 16734,
"n": <number>,
"connectionId": <number>,
"ok": 1
}
[1]*(12)*在 2.4 中,尽管有启动警告,但指定"1""-1"类型(字符串"1""-1")的索引将 continue 存在。 但是 ,副本集中的secondary无法完成来自具有"1""-1"索引的主数据库的初始同步。避免使用无效类型的所有索引。