以前のバージョンの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
の代わりに データベース)。