1. ホーム
  2. mongodb

[解決済み] 同じデータベース内でコレクションをコピーする最も速い方法は何ですか?

2022-02-12 14:06:39

質問内容

の中にあるコレクションをコピーしたいのですが。 同じ データベースを作成し 基本的にスナップショットを作成します。

これを行うには、どのような方法があるのでしょうか?コマンドはあるのでしょうか? 各レコードを順番にコピーするのですか?

私が意識しているのは cloneCollection というコマンドがありますが、どうやら を別のサーバーにコピーするだけです。

また、私が意識しているのは mongoimportmongoexport しかし、私はPHPでこれをやっているので、シェルへの呼び出しは避けたいのです。

解決方法は?

いくつかの選択肢がありますが、最も手っ取り早いのは

mongodump -d db -c sourcecollection 
mongorestore -d db -c targetcollection --dir=dump/<db>/<sourcecollection.bson>

または

mongoexport -d db -c sourcecollection | mongoimport -d db -c targetcollection --drop

またはphpで。

`mongoexport -d db -c sourcecollection | mongoimport -d db -c targetcollection --drop`;

その後に

mongo db < script.js

で示すように、ここで mongo ドキュメント , script.jsには以下のようなものが含まれています。

db.myoriginal.find().forEach( function(x){db.mycopy.insert(x)} );

コレクションをコピーするのに一番遅い (一桁以上) 方法は、 ネイティブの php ドライバを使うことでしょう - 単に情報を移動させるためです。しかし、どうしても cli 呼び出しを避けたい場合は、上記のような mongo クエリを実行することもできます。 dbの実行 という関数があります。