web-dev-qa-db-ja.com

Mongorestore中にMongodb _idの値とインデックスが失われる

私が使用した手順:

  1. mongodump
  2. ダンプフォルダーを別のコンピューターにコピーします(コレクションごとに.bsonファイルとメタデータファイルを取得します)
  3. mongorestore myDumpFolder

インデックスが失われていることに気づき、_idmongorestoreの後に新しい値があります。

誰でも、インデックスとmongodb_idの両方を復元した復元体験を共有できますか?

1
Will

誰でも、インデックスとmongodb_idの両方を復元した復元体験を共有できますか?

MongoDBのドキュメントに従って ここ デフォルトでは、 mongorestore は、dump /ディレクトリでデータベースバックアップを探します。

バージョン3.6の新機能:

すべてのMongoDBコレクションには、デフォルトでUUIDがあります。 MongoDBがコレクションを復元すると、復元されたコレクションは元のUUIDを保持します。 UUIDが存在しないコレクションを復元すると、MongoDBは復元されたコレクションのUUIDを生成します。

UUID()の構文は次のとおりです。

UUID(<string>)

Parameter   Type    Description
hex        string   
                    Optional. Specify a 36 character string to convert to a UUID BSON object. If not provided, MongoDB generates a random UUID in RFC 4122 v4 format.

Changed in version 3.6: In earlier versions of the mongo Shell, UUID required a hexadecimal string argument. See the 3.4 manual.

A BSON UUID objectを返します。

インデックスが失われ、_idにmongorestoreの後に新しい値が含まれていることに気付きました。

@ Will、JJussiは既にmongorestoreがmongodumpが記録したすべてのインデックスを再作成する必要があると述べました。

C:\data\dumpフォルダにmongodumpがあります。データベースフォルダーが含まれる100YWeatherSmallcitibikecityshipsvideoと(.bson.json)ファイル。これらのデータベースは、MongoDB 3.6ですでに復元されています。 enter image description here

ここでも、MongoDB 3.6のこれらのデータベースダンプファイルにmongorestoreを実行します。

ご覧のとおり、すべてのデータベースはすでにMongoDBにあります。

enter image description here

注:ここでは、セキュリティ上の理由から、いくつかのデータベース名を強調表示しています。

ここでは、以下のコマンドでmongorestoreを実行します。

C:\Program Files\MongoDB\Server\3.6\bin>mongorestore --verbose C:\data\dump

注:mongorestoreは、mongoシェルではなく、システムコマンドラインから実行します。

video.moviesデータベースダンプリストアレポートステータス

- E11000 duplicate key error collection: video.movies index: _id_ dup key: { : ObjectId('58c59c6b99d4ee0af9e0eef0') }
  - E11000 duplicate key error collection: video.movies index: _id_ dup key: { : ObjectId('58c59c6b99d4ee0af9e0eef1') }
  - E11000 duplicate key error collection: video.movies index: _id_ dup key: { : ObjectId('58c59c6b99d4ee0af9e0eef2') }
  - E11000 duplicate key error collection: video.movies index: _id_ dup key: { : ObjectId('58c59c6b99d4ee0af9e0eef3') }
  - E11000 duplicate key error collection: video.movies index: _id_ dup key: { : ObjectId('58c59c6b99d4ee0af9e0eef4') }

100YWeatherSmall.dataデータベースダンプリストアレポートステータス

- E11000 duplicate key error collection: 100YWeatherSmall.data index: _id_ dup key: { : ObjectId('5553a98ee4b02cf7150e1cc8') }
  - E11000 duplicate key error collection: 100YWeatherSmall.data index: _id_ dup key: { : ObjectId('5553a98ee4b02cf7150e1cca') }
  - E11000 duplicate key error collection: 100YWeatherSmall.data index: _id_ dup key: { : ObjectId('5553a98ee4b02cf7150e1ccc') }
  - E11000 duplicate key error collection: 100YWeatherSmall.data index: _id_ dup key: { : ObjectId('5553a98ee4b02cf7150e1ccd') }
  - E11000 duplicate key error collection: 100YWeatherSmall.data index: _id_ dup key: { : ObjectId('5553a98ee4b02cf7150e1cd0') }

citibike.tripsデータベースダンプリストアレポートステータス

 - E11000 duplicate key error collection: citibike.trips index: _id_ dup key: { : ObjectId('572bb8232b288919b68b258e') }
  - E11000 duplicate key error collection: citibike.trips index: _id_ dup key: { : ObjectId('572bb8232b288919b68b25ad') }
  - E11000 duplicate key error collection: citibike.trips index: _id_ dup key: { : ObjectId('572bb8232b288919b68b2608') }
  - E11000 duplicate key error collection: citibike.trips index: _id_ dup key: { : ObjectId('572bb8232b288919b68b26c5') }
  - E11000 duplicate key error collection: citibike.trips index: _id_ dup key: { : ObjectId('572bb8232b288919b68b26da') }

index: id であるため、mongorestoreの実行中はすべてindex: _id_ dup key:が表示されていることがわかります。は既にそのデータベースとコレクションに存在しています。

つまり、mongodumpが作成したインデックス: id &ObjectIdは同じインデックス: id &ObjectIdはMongoDBの同じmongorestoreです。

ここで、以下のレポートはcitibike.trips mongorestoreの完全なmongodump復元レポートです。

2018-05-30T10:56:31.962+0300    [########################]  citibike.trips  835MB/835MB  (100.0%)
2018-05-30T10:56:31.962+0300    restoring indexes for collection citibike.trips from metadata
2018-05-30T10:56:32.106+0300    finished restoring citibike.trips (1990273 documents)
2018-05-30T10:56:32.126+0300    done

たとえば、ここではcitibite.tripsが完全なレポートを復元することだけを述べました。メッセージはメタデータからのコレクションcitibike.tripsのインデックスの復元を示しています。

したがって、上記の結論に従って、mongorestoreObjectIdが作成した同じindex:_id_mongodumpを格納すると言えます。

さらに参考にするために herehere および here

2