mongo資料庫遷移和備份還原
阿新 • • 發佈:2018-11-16
想要將資料庫1的40條記錄插入到資料庫2中去,用工具只能一條一條的插入,發現可以寫一個簡單的程式來解決這個問題
原作者地址:mongoDB如何複製collection裡的資料到另一個collection方法總結
方法一:
db.test(複製源表).find().forEach(function(x){
db.target(目的表).insert(x);
})
在他的方法二基礎上進行修改程式如下,可以跨不同的資料庫操作,請自行擴充套件
import com.mongodb.MongoClientURI; import org.bson.Document; import com.mongodb.MongoClient; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoDatabase; import static com.mongodb.client.model.Filters.eq; public class MongoMigrationTool { public static void main(String[] args) { MongoClientURI connectURI = new MongoClientURI("mongodb://管理員使用者名稱:管理員密碼@127.0.0.1:27017"); MongoClient client = new MongoClient( connectURI); MongoDatabase database = client.getDatabase( "database" ); MongoCollection<Document> collection = database .getCollection("question" ); MongoDatabase database1 = client.getDatabase( "database1" ); MongoCollection<Document> collection1 = database1.getCollection("question" ); FindIterable<Document> findIterable = collection1.find(eq("_id", "123")); //iterator——迭代 MongoCursor<Document> mongoCursor = findIterable .iterator(); //遊標 int index=0; while (mongoCursor .hasNext()){ Document d = mongoCursor .next(); //遍歷每一條資料 collection .insertOne(d ); System.out.println((index++)+":"+d); } System. out .println("轉移成功" ); } }
下面是備份和恢復命令,記錄一下
mongodump -h 127.0.0.1:27017 --username myAdmin --password 12345678 -d test -o /tmp --authenticationDatabase test
mongorestore -h 127.0.0.1:27017 -d test -u myAdmin -p 12345678 /tmp/test