mongoDB复制

因为现有项目数据更新,部分字段类型结构发生改变,需要处理,所以找了几种复制的资料

一、在同一个主机上从一个db的表复制到另一个db

db.collection_name.find().forEach(function(d){ db.getSiblingDB('new_database')['collection_name'].insert(d);})

collection_name是数据库表名
new_database是目的数据库

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

例如:将sys_param_type中的数据复制一份到targetDbName数据库实例中的sys_param_type集合中,代码如下:

db.sys_param_type.find().forEach(function(d){ db.getSiblingDB(‘targetDbName’)[‘sys_param_type’].insert(d);})

二、复制数据库

1.命令:

db.copyDatabase(fromdb,todb,fromhost,username,password,mechanism)

参数解释:

  • fromdbt: 源db;
  • todb: 目标db;
  • fromhost: 源db的主机地址,如果在同一个mongod实例内可以省略;
  • username: 如果开启了验证模式,需要源DB主机上的MongoDB实例的用户名;
  • password: 同上,需要对应用户的密码;
  • mechanism: fromhost验证username和password的机制,有:MONGODB-CR、SCRAM-SHA-1两种。
    举例:
    db.copyDatabase(‘shiroDemoOld’,‘shiroDemoNew’,‘127.0.0.1:27017’,‘root’,‘123456’,‘SCRAM-SHA-1’)

三、复制Collection

第一种方式(runCommand)

db.runCommand({

cloneCollection: <namespace>

fromhost: <hostname>

query: <filter>

});

例如:

db.runCommand({cloneCollection:‘testdb.testcol’, from:‘127.0.0.1:27017’,copyIndexes:false, query:{‘age’:{‘gt’:2}}});

copyIndexes:是否复制索引

第二种方式( db.cloneCollection):

db.cloneCollection(fromCollection, toCollection, query)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值