.db怎么复制到java里_MongoDB如何复制collection里的数据到另一个collection方法总结...

MongoDB的可以直接复制数据库,但是对于数据库里的表却没有直接的复制语句。在项目中遇到数据放错collection了情况就很棘手,现在将方法总结如下:

1、使用工具Studio 3T for MongoDB

选择一个数据库中的Collections集合,然后按住 Ctrl+C 复制快捷键会弹出如下帮助框。

bc7fdfc03a181785f939cc7c3cabcadc.gif

点击 Ctrl+V 粘贴快捷键,重命名一下复制的名称即可。

bc7fdfc03a181785f939cc7c3cabcadc.gif

2、使用工具Robo 3T

在Collection中,右键选择复制Collection

bc7fdfc03a181785f939cc7c3cabcadc.gif

然后重命名即可

bc7fdfc03a181785f939cc7c3cabcadc.gif

3、利用foreach方法在shell里直接运行db.test(复制源表).find().forEach(function(x){

db.target(目的表).insert(x);

})

4、在Java里操作,代码如下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;

public class DBtransfer {

public static void main(String[] args) {

MongoClient client = new MongoClient( "000.00.00.000", XXXXX); //数据库地址

MongoDatabase database = client.getDatabase( "XXX" );  //数据库名

MongoCollection collection = database .getCollection("XXXX" ); //要转移数据的表名

MongoCollection collection2 = database .getCollection("XXXX" );//放入的表名

FindIterable findIterable = collection .find(); //iterator——迭代

MongoCursor mongoCursor = findIterable .iterator();  //游标

while (mongoCursor .hasNext()){

Document d  = mongoCursor .next(); //遍历每一条数据

collection2 .insertOne(d );

// System.out.println( mongoCursor.next() );

}

System. out .println("转移成功" );

//            System.out.println(collection.find().toString());

}

}

5、克隆collection

1)克隆远程colletion,使用cloneCollection命令完成将远程的collection复制到本地。

命令格式:db.runCommand({cloneCollection:"集合",from:"原机器",copyIndexes:false}),copyIndexes:是否复制索引

例子:132.42.33.175上test库t1表上有一条数据> db.t1.find()

{ "_id" : ObjectId("4fd9a4bf186cb1b6ac95907d"), "name" : "liangzhangping", "addr" : "beijing" }

132.42.33.190上test库上t1表有两条条数据> db.t1.find()

{ "_id" : ObjectId("4fd9c517dcde2d0e33d08c76"), "name" : "liangzhangping", "age" : 28 }

{ "_id" : ObjectId("4fda1795a3d56c6a40f2bc26"), "name" : "liangzhangping", "addr" : "jiangxi" }

现在将132.42.33.175上test库t1表的数据克隆到132.42.33.190上test库上t1表上,操作如下:

a、登录132.42.33.190机器上执行:> db.runCommand({cloneCollection:"test.t1",from:"132.42.33.175:28010"})

{ "ok" : 1 }

b、查看验证> db.t1.find()

{ "_id" : ObjectId("4fd9c517dcde2d0e33d08c76"), "name" : "liangzhangping", "age" : 28 }

{ "_id" : ObjectId("4fda1795a3d56c6a40f2bc26"), "name" : "liangzhangping", "addr" : "jiangxi" }

{ "_id" : ObjectId("4fd9a4bf186cb1b6ac95907d"), "name" : "liangzhangping", "addr" : "beijing" }

2)克隆本地collection,MongoDB没有提供命令进行本地复制,但我们可以写一个循环插入的方法完成,

参考上述3的循环插入代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值