Mongodb学习二:复制mongoDB collection到本地数据库

转载请注明来源http://www.cnblogs.com/whuisland/

查文档没找到合适的方法实现复制mongodb collection到远程另外一个mongodb,用了个土办法解决问题。大家有好方法的欢迎留言。

备忘:

1、为什么要用quote_plus

  答:解决编码问题,尤其是密码有可能有特殊字符。文档:https://docs.python.org/2/library/urllib.html

2、ObjectID、ISOdate之类数据类型python处理起来挺折腾,但是在这个case里可以读取以后直接写到新的document里,不用考虑数据类型。

 

遗留问题:

1、这么搞对源数据库性能有没有影响?

2、插入新记录性能是否还能优化?

3、find()锁机制,是否影响写性能或脏读?

  答:部分解答https://www.cnblogs.com/xiaolang8762400/p/7255878.html

 

 

 1 #mongodb和格式化字符串
 2 from pymongo import MongoClient
 3 from urllib import quote_plus
 4 
 5 #源数据集
 6 readuri = "mongodb://%s:%s@%s" % (
 7     quote_plus(“test123"), quote_plus(“test123@123"), “testhost:1111/SrcDB”)
 8 ReadClient = MongoClient(readuri)
 9 rdb = ReadClient.bgpmonitor
10 
11 #目的数据集
12 writeuri = "mongodb://anothertesthost:27017/DstDB”
13 WriteClient = MongoClient(writeuri)
14 wdb = WriteClient[‘DstDBCollection’]
15 
16 #查询所有记录
17 rcursor = rdb.SrcColleciton.find()
18 #一条条写到目的数据库
19 for document in rcursor:
20     wcursor = wdb.DstCollection.insert_one(document)

转载于:https://www.cnblogs.com/whuisland/p/7839610.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值