转载请注明来源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)