• mongodb的db.collection.copyTo()方法


    ##############################

    原集合名字:db.aaa
    
    复制后的集合名字:db.bbb (复制会自动创建)
    
    db.aaa.find({}).forEach(function(x){db.bbb.insert(x)})
    
    注意:千万不要使用 db.source.copyTo()
    
    它会在底层锁定mongo库,使其无法操作,在线上环境是非常危险的
    后来我们查看了官网对db.collection.copyTo()这个方法的说明,原来我们踩到了地雷了,我们当时使用的Mongodb版本是3.0版本,查看3.0版本的这个方法的说明,

    发现这个方法在3.0版本已经被废弃了,已经不建议使用了。具体看了下,原来这个方法在执行的时候,会使用一个全局锁(什么是全局锁呢?就是你在执行过程中的,

    所有的对这个mongodb实例服务的读写操作都会被拒绝,多么坑爹的一个玩意),这就导致了后来我们的一些接口在调用这个实例上的数据查询服务时都遇到了异常。 当时看了下我们的库中的数据量,一百万条左右,当时直接导致现网故障时间就达两分钟,可想而知,要是当时数据库中的数据量再大点,那多占用多长的时间!!! 因此,以后在拷贝集合的时候尽量不要使用这个方法了。可以考虑一下mongoexport和mongoimport,或者mongosync。如果在拷贝的过程中还需要做一些逻辑处理,

    还可以写代码循环遍历集合中的数据,然后再插入到新集合中,这样就不会有任何问题了。

    ########################

    igoodful@qq.com
  • 相关阅读:
    每天一个css text-indent
    每天一个css word-break word-wrap white-space
    [转载]CentOS+nginx+uwsgi+Python+django 环境搭建
    【转】django使用model创建数据库表使用的字段
    Django对mysql操作
    mysql增删改查
    mysql用户管理
    centos7启动mysql
    centos安装python3
    [转载]python学习目录(转至袁先生的博客)
  • 原文地址:https://www.cnblogs.com/igoodful/p/14470596.html
Copyright © 2020-2023  润新知