web-dev-qa-db-ja.com

Mongorestore:createIndexエラー:v:2インデックスキーパターンの値をオブジェクトタイプにすることはできません。数値> 0、数値<0、および文字列のみが許可されます

大きなMongoDBデータベースでmongorestoreコマンドを実行すると、次のエラーが表示されます。

バックアップが行われたマシン:

db version v4.2.0
git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
OpenSSL version: OpenSSL 1.1.1  11 Sep 2018
allocator: tcmalloc
modules: none
build environment:
    distmod: ubuntu1804
    distarch: x86_64
    target_Arch: x86_64

ローカルマシンのバージョン(ここでmongorestoreを実行します)

db version v4.0.10
git version: c389e7f69f637f7a1ac3cc9fae843b635f20b766
allocator: system
modules: none
build environment:
    distarch: x86_64
    target_Arch: x86_64

失敗:prod.DeviceState:prod.DeviceState:createIndexエラーのインデックスの作成エラー:v:2インデックスキーパターンの値はオブジェクトタイプにできません。数値> 0、数値<0、および文字列のみが許可されます。

この問題を解決するための助けはありますか?

ありがとうございました

3
Simoyw

バージョン4.2以降、mongodumpは拡張JSON v2.0(正規)形式をメタデータファイルに使用します。これらのファイルを復元のために解析するには、拡張JSON v2.0(CanonicalまたはRelaxedモード)形式をサポートするmongorestoreバージョン4.2以降を使用します。

ヒント
一般的な場合は、mongodumpとmongorestoreの対応するバージョンを使用してください。つまり、mongodumpの特定のバージョンで作成されたデータファイルを復元するには、対応するバージョンのmongorestoreを使用します。

https://docs.mongodb.com/manual/reference/program/mongodump/#metadata-format

したがって、v4.2.0を指定してmongorestoreを実行する必要があります

または、これを試してください(MongoDBバックアップを保持)

  1. Mongod v4.2.0を停止します
  2. Mongod v4.0.10を実行します(失敗した場合は、次のトリックに進みます)
  3. v4.0.10のmongodumpデータベース

その他のトリック:

mongodumpは、メタデータファイルに拡張JSON v2.0(正規)形式を使用します

  1. Mongod v4.0.10を起動します
  2. すべてのコレクションとインデックスを作成する
  3. mongodump v4.0.10
  4. metadata files .json dump v4.2.0をv4.0.10に置き換えます
  5. v4.0.10でのmongoestoreダンプ
0
Valijon