33

私はmongodbを呼び出しtest、このdbには2つのコレクションcollection1とを持っていcollection1_backupます。のコンテンツをcollection1からのデータに置き換える方法collection1_backup

4

7 に答える 7

64

これを行うための最良の方法(コレクションの名前がで終わることを考慮すると_backup)は、おそらくmongorestoreを使用することです:http://docs.mongodb.org/manual/reference/mongorestore/

ただし、この場合は状況によって異なります。コレクションがシャーディングされていない場合は、renameCollectionhttp://docs.mongodb.org/manual/reference/command/renameCollection/)を使用するか、(JavaScriptコードで)より手動の方法を使用できます。

db.collection1.drop(); // Drop entire other collection
db.collection1_backup.find().forEach(function(doc){
   db.collection1.insert(doc); // start to replace
});

これらは、これを行うための最も一般的な方法です。

于 2012-12-17T14:37:10.427 に答える
6

これは、次の簡単なコマンドを使用して実行できます。

db.collection1_backup.aggregate([ { $match: {} }, { $out: "collection1" } ])

このコマンドは、collection1のすべてのドキュメントを削除してから、collection1にcollection1_backupのクローンを作成します。

一般的なコマンドは

db.<SOURCE_COLLECTION>.aggregate([ { $match: {} }, { $out: "<TARGET_COLLECTION>" } ])

TARGET_COLLECTIONが存在しない場合は、上記のコマンドで作成されます。

于 2019-05-06T22:13:49.413 に答える
5

また便利です:コレクションをjsonファイルにエクスポートします

mongoexport --collection collection1_backup --out collection1.json

jsonファイルからコレクションをインポートするには

mongoimport --db test --collection collection1 --file collection1.json

バックアップ/ダンプファイルから単一のコレクションをインポートするには、を使用して*.bsonファイルを*.jsonに変換する必要があります

bsondump collection1_backup.bson > collection1_backup.json
于 2012-12-17T15:48:50.287 に答える
2

単にこれを行うだけです。

//コレクション1を削除します

db.collection1.drop();

//collection1_backupからcollection1にデータをコピーします

db.collection1.insert(db.collection1_backup.find({},{_id:0}).toArray());
于 2019-08-22T07:32:46.190 に答える
1

より良い方法は使用することです.toArray()

 db.collection1.drop(); // Drop entire other collection

 // creates an array which can be accessed from "data"
 db.collection1_backup.find().toArray(function(err, data) {

      // creates a collection and inserting the array at once
      db.collection1.insert(data);
 });
于 2017-03-02T08:33:49.437 に答える
1

簡単なコマンドを使用して、MongoDBコレクションをバックアップできます。MongoDB4.0以前のバージョンでのみ動作します。

db.sourceCollectionName.copyTo('targetCollectionName')

targetCollectionNameはSingle(')またはDouble( ")である必要があります引用

ノート:

db.collection.copyTo()メソッドは、内部でevalコマンドを使用します。その結果、db.collection.copyTo()操作は、db.collection.copyTo()が完了するまで、他のすべての読み取りおよび書き込み操作をブロックするグローバルロックを取得します。

于 2017-06-10T11:29:34.163 に答える
0

Javaドライバーの使用

以下を試してください:

public void copyTo(String db,String sourceCollection,String destinationCollection,int limit) throws        
UnknownHostException {

    MongoClient mongo = new MongoClient("localhost", 27017);
    DB database = mongo.getDB(db);
    DBCollection collection = database.getCollection(sourceCollection);
    DBCursor dbCursor = collection.find().limit(limit);
    List<DBObject> list =  dbCursor.toArray();
    DBCollection destination =  database.getCollection(destinationCollection);
    destination.insert(list, WriteConcern.NORMAL); //WRITE CONCERN is based on your requirment.

}
于 2014-09-15T10:26:08.463 に答える