注:私はすでに--noIndexRestoreについて知っています
次のドキュメント構造を持つ組織コレクションがあります。
{
"_id" : ObjectId("5cc2bf9f5ca45131b8f8e427"),
"name" : "National",
"parent" : "null",
"level" : 1,
"label" : "National",
"identifier" : "Default",
"client_id" : ObjectId("5af3178c141292374cbf363e")
}
次のフィールドにインデックスを作成しました。
インデックスをチェックすると
db.org.getIndexes();
結果:
/* 1 */
{
"v" : 2,
"key" : {
"_id" : 1
},
"name" : "_id_",
"ns" : "testdbname.org"
},
/* 2 */
{
"v" : 2,
"key" : {
"name" : 1
},
"name" : "name_1",
"ns" : "testdbname.org"
},
/* 3 */
{
"v" : 2,
"key" : {
"parent" : 1
},
"name" : "parent_1",
"ns" : "testdbname.org"
},
/* 4 */
{
"v" : 2,
"key" : {
"level" : 1
},
"name" : "level_1",
"ns" : "testdbname.org"
},
/* 5 */
{
"v" : 2,
"key" : {
"identifier" : 1
},
"name" : "identifier_1",
"ns" : "testdbname.org"
},
/* 6 */
{
"v" : 2,
"key" : {
"client_id" : 1
},
"name" : "client_id_1",
"ns" : "testdbname.org"
}
上記のインデックスはすべて私には問題なく見えます。しかし、サーバーでバックアップを取り、それを別の場所に復元すると、組織コレクションの復元中に次のエラーが発生します。
reading metadata for testdbname.org from archive 'testdbname_05-10-2019_00%3A55%3A31.archive'
2019-10-05T10:20:40.979+0500 restoring testdbname.org from archive 'testdbname_05-10-2019_00%3A55%3A31.archive'
2019-10-05T10:20:41.226+0500 reading metadata for testdbname.questionbank from archive 'testdbname_05-10-2019_00%3A55%3A31.archive'
2019-10-05T10:20:41.237+0500 restoring indexes for collection testdbname.org from metadata
2019-10-05T10:20:41.240+0500 Failed: testdbname.org: error creating indexes for testdbname.org: createIndex error: Values in v:2 index key pattern cannot be of type object. Only numbers > 0, numbers < 0, and strings are allowed.
問題が将来ここに来る人々のために、私はローカルでMongoDB 4.0を使用していて、サーバーは4.2でした:
バージョン4.2から、mongodumpはメタデータファイルに拡張JSON v2.0(正規)形式を使用します。これらのファイルを復元のために解析するには、拡張JSON v2.0(CanonicalまたはRelaxedモード)形式をサポートするmongorestoreバージョン4.2以降を使用します。詳細については、この「メタデータ形式」セクションを参照してください。 docs.mongodb.com/manual/reference/program/mongodump