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 バイトですか、それとも他の組み合わせですか? つまり、複合インデックスの場合、キーの長さが 1024 バイトの制限を超えていることをどのように判断するのでしょうか?