0

我希望将 MongoDB 2.4.x 实例升级到 2.6。作为此过程的一部分,我运行了该db.upgradeCheckAllDBs()方法以确保我的数据处于正确的升级状态。此检查在我的数据库中发现了许多记录,它们在字段上定义了索引,但键超过了 1024 字节的限制。也就是说,我看到了以下形式的错误:

Document Error: key for index {  "v" : 1,  "name" : "field_1",  "key" : {  "field" : 1 },  "ns" : "mydb.users" } too long for document

指示该文档在field字段中包含超过 1024 字节(键的限制)的值。

这很容易解决(我可以删除 上的那个索引field),但是复合索引呢。例如:假设我有一个如下索引:

Document Error: key for index {  "v" : 1,  "name" : "email_-1_meta_-1",  "key" : {  "email" : -1,  "meta" : -1 },  "ns" : "mydb.users" } too long for document

这是否意味着文档的emailmeta字段的长度超过了 1024 字节?或者每个字段是 1024 字节,还是其他组合?即对于复合索引,如何判断key长度超过了1024字节的限制?

4

1 回答 1

2

索引条目的总大小(可能包括取决于 BSON 类型的结构开销)必须小于 1024 字节。

如果我们在 f1、f2、f3 上有复合索引 -> fi+f2+f3+结构开销 < 1024

更多在这里

于 2016-06-11T21:43:43.680 回答