为了账号安全,请及时绑定邮箱和手机立即绑定

mongodb遍历后,更新每条数据某个字段的值,但只能执行部分(约2000条),之后报错(脚本执行失败)

/ 猿问

mongodb遍历后,更新每条数据某个字段的值,但只能执行部分(约2000条),之后报错(脚本执行失败)

qq_YAO_4 2017-11-30 18:00:49
  1. 下面的2是执行的代码,使用的工具是robomongo。


  2. var begin = 1499675090;
    var end = 1499675198;
    var t = begin;
    while(t<=end){
        db.getCollection('event').find({createdDate:{$lt:t+100, $gte:t}}).forEach(
            function(item){
                if(item.account_login!= undefined && item.account_login!= null){
    				item.account_login = item.account_login.substr(0,5)+'123456';
    				db.getCollection('event').save(item);
                }
          
            };
        );
        t+=100;
           
    }


  3. 也使用过下面4和5代码,依旧不行

  4. var begin = 1499675090;
    var end = 1499675198;
    var t = begin;
    while(t<=end){
        var aa=db.getCollection('event').find({createdDate:{$lt:t+100, $gte:t}})
        aa.forEach(
            function(item){
                if(item.account_login!= undefined && item.account_login!= null){
    				item.account_login = item.account_login.substr(0,5)+'123456';
    				db.getCollection('event').save(item);
                }
          
            };
        );
        t+=100;
           
    }
  5. db.getCollection('event').find().forEach(
         function(item){
          
          if(item.account_login!= undefined&&item.account_login!= null){
              
          item.account_login = item.account_login.substr(0,5)+'123456';
               
          db.getCollection('event').save(item);
           }
          
      }
    )
  6. 请问各位有使用过mongodb的大神,为什么会出现js脚本执行一部分,剩下没执行完就报错这种情况,(当数据量小于2000条时可以执行完不会报错)非常感谢。

查看完整描述

3 回答

?
qq_YAO_4

忘记说,最后这个问题解决了,直接在linux上跑可以,所以应该是这个robomongo的问题!

查看完整回答
反对 回复 2017-12-27
?
qq_YAO_4

我这几天都在搞这个问题,用java程序直接操作,200多万条数据全量跑完,但是用这个robomongo就只能执行2000条左右,所以反过来我觉得是robomongo的问题,目前只能推到这个地步!

查看完整回答
反对 回复 2017-12-01
?
慕慕0098458

一般写这种先执行一遍查询,里面不带任何操作。看一下数据有无问题。可以看一下if(item.account_login!= undefined&&item.account_login!= null) 里面加一个!=‘’看能走多少

查看完整回答
反对 回复 2017-12-01
  • qq_YAO_4
    qq_YAO_4
    我这几天都在搞这个问题,用java程序直接操作,200多万条数据全量跑完,但是用这个robomongo就只能执行2000条左右,所以反过来我觉得是robomongo的问题,目前只能推到这个地步!

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信