我希望将 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
这是否意味着文档的email
和meta
字段的总长度超过了 1024 字节?或者每个字段是 1024 字节,还是其他组合?即对于复合索引,如何判断key长度超过了1024字节的限制?