以前のバージョンのMongoDBでは、db.collection.copyTo()を使用できました。 コレクションをコピーする方法。
その後、MongoDBはそのメソッドを非推奨にしました。また、バージョン4.2以降、MongoDBはevalを削除しました。 指図。与えられたdb.collection.copyTo() evalをラップします 、これは、MongoDB 4.2以降を使用している場合、どちらも使用できないことを意味します。
幸い、MongoDBコレクションをコピーする別の方法があります。
MongoDBデータベースツールを確認する
MongoDBでは、MongoDBデータベースツールを使用してコレクションのクローンを作成できます。具体的には、mongodumpを使用できます およびmongorestore 。
MongoDBデータベースツールは、MongoDBを操作するためのコマンドラインユーティリティのスイートです。
MongoDBデータベースツールがインストールされているかどうかわからない場合は、ターミナルまたはコマンドプロンプトで次のコマンドを実行して確認してください。
mongodump --version
mongorestore --version
これは特にmongodumpをチェックします およびmongorestore バージョン。
それらがない場合は、MongoDB Webサイトにあるインストール手順を使用して、MongoDBデータベースツールをシステムにインストールできます。
コレクションを同じデータベースにクローン化する
mongodumpを実行する必要があります およびmongorestore システムのコマンドラインから(たとえば、新しいターミナルまたはコマンドプロンプトウィンドウ)。 mongoから実行しないでください シェル。
コレクションを同じデータベースに複製するコードの例を次に示します。
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHotel.pets2'
この場合、petsをバックアップします PetHotelのコレクション データベースを作成し、pets2として復元します。 同じデータベースにあります。
これはmongodumpを使用します コレクションのバックアップファイルを作成するには、mongorestore そのコレクションを別の名前で復元します。これを行うには、コレクションを標準の出力ストリームにダンプし、mongorestoreにパイプします。 。
各パラメータの機能は次のとおりです。
| パラメータ | 説明 |
|---|---|
--archive | 出力を指定されたアーカイブファイルに書き込みます。アーカイブファイルが指定されていない場合は、標準出力(stdout)に書き込みます。 )。この場合、アーカイブファイルは指定されていないため、標準出力に書き込まれます。 |
--db | クローンを作成するコレクションを含むデータベースを指定します。この場合、データベースはPetHotelと呼ばれます。 。 |
--nsFrom | ダンプファイル内のコレクションを指定します。これは、クローンを作成するコレクションです。 |
--nsTo | 復元時に使用するコレクション名を指定します。この例では、これをpets2と呼びます。 。 |
コレクションを別のデータベースにコピーする
同じ手法を使用して、コレクションを別のデータベースにコピーできます。この場合、必要がなければコレクションの名前を変更する必要はありません。
次に例を示します:
mongodump --archive --db=PetHotel --collection=pets | mongorestore --archive --nsFrom='PetHotel.pets' --nsTo='PetHouse.pets'
これは、--nsToを除いて、前の例と非常によく似ています。 引数はPetHouse.petsを指定します 宛先コレクションとして。
これは、クローン化されたコレクションがpetsと呼ばれることを意味します 、およびPetHouseに配置されます データベース(元のPetHotelの代わりに データベース)。