苦于找不到现成的,就自己写了一个复制任意两个集合,请自行替换函数中的汉字部分。(或者把默认参数删掉然后在调用时按照格式传参)
唯一需要注意的是副本集合需已存在且为空(复制前请先自行创建一个空副本集合)文档注释的部分参考了某大佬的文章,没有需求请无视
"""
ps:对username和password中包含的@和:进行url编码,@的url编码为%40,:的编码为%3a。
(具体可以使用url_encode在线工具验证,网址:http://tool.chinaz.com/Tools/urlencode.aspx )
因此对于“username为ab@c,password为al:ex”这种情况,uri应该改为如下:
String uri ="mongodb://ab%40c:al%3aex@127.0.0.1:27017/dbname";
"""
from pymongo import MongoClient
def copy_mongodb(
from_collection=MongoClient('mongodb://用户名:密码@地址:端口号')['数据集名字'][
'集合名字'],
to_collection=MongoClient('mongodb://用户名:密码@地址:端口号')['数据集名字'][
'集合名字'):
"""
:param from_collection: 原始集合
:param to_collection: 副本集合
:return: None
"""
with from_collection.find(no_cursor_timeout=True) as cursor:
for row in cursor:
to_collection.insert_one(row)
print("***复制完成^^***")
if __name__ == '__main__':
copy_mongodb()