mongodb代码之复制集合(pymongo)

	苦于找不到现成的,就自己写了一个复制任意两个集合,请自行替换函数中的汉字部分。(或者把默认参数删掉然后在调用时按照格式传参)
	唯一需要注意的是副本集合需已存在且为空(复制前请先自行创建一个空副本集合)文档注释的部分参考了某大佬的文章,没有需求请无视
# !/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :CopyMongodb.py
# @Time      :2022/10/19 15:09
# @Author    :YJJ
"""

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:
        # 防止游标超时设置为True;为了自动管理游标关闭,用了with...as,类似于文件打开操作
        for row in cursor:
            to_collection.insert_one(row)
    print("***复制完成^^***")


if __name__ == '__main__':
    copy_mongodb()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值