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

  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条时可以执行完不会报错)非常感谢。

qq_YAO_4
浏览 5184回答 2
2回答

慕瓜9220888

MBGPVYLOOWUWSARMVMHTMUUNXDDONHWILPCCAYQRWZWQNCHAJOBVWPBZYLHYUELIRXCBORREHPOVUXKNHMXTFORORVMEMLKOBAOFGSRWTWZACTGIUHKPWARWIKOKWGBMLLHUQLMOZIIPFSCDQIFOANQXHVGFOTNQDNMXQLANAXGLGOKWZZPKZEJJEOBOFUFRXVIFMJIRWEBAHWEZBXRTQNKAOVYNVVSFFLIVYJBBLFWLRZFYBVFGXTIEOBHREACMLYLYPVVLKFWPMWKPIHSWSWDKIRTZINUOKPEAVEUQEPPOACVSFIGVEEOUEDKRQMYFPCVMUZLNZSVQBDGGVNANSCCQKTCZCPJFTFRUHYEVEPRDZCFSSKFPWCECADPFJDQDXDRTPCIVFBPDLAAGZDXBPYAZMSQBPJKTNJPJAHBWLYENHLPNPUBHDPJXLPHNDZWQULFATOYGGKICTNWMWQUMTVVVLVFGOQZZIOBMQXCSYXGUUIJSEWAAKFCYJLXWWWKCWJCHXNXQQUUOBBFSGUSCHXYHFFDRTVLEDHDHFABHRNREKICODTDQRWYNVIOVMGDSFDQDFFVYFHQJSOVROFXOHQMPCZARSEXZJGCAVHJZLYWFGMHJEDQDHEIGSEQAURIBMXJVOHXOOWYRDWQXGETJOQTGXHSQSRRIFVFIGIFBUORRVTCLQKNAQTNJLXXQGXNIKPMNJXRGBNJVCZIMGEQNMTWHILCBQPWFSMAIRWCMSVWIGEGILYBYSRCCVFFSDOPBBKNXTXBQIAQMIOPPAGCXZCJGCAPLKHANFKMEULKXHVMDWRHDHATYWIRDQOBCNPKVNTQTUGOQLXRKNUBGINJCJTNQLXBAANNRKSBFEHKHEJIBXTDQTJSHCQZCSSCBZVBQXKUOLGAWSVBYCHZSLGDNGNACPAWZZWIOIKNFKHKUEVKVXKDKENPRTILYLCVCEXHEANOXPSNYYREEVQJUQAVYYNVHCSBOYYRVURGXKXXLTYEGQPLYKLTMDQANQOMUNSFSWWJUDFEVZPGAEGZNQTQADVDJRERAYLTVHZFXXYCQXMPQDQNEPHARFCBYFXDJBRHWGUCKTIIIVUPNZLGAICIIUKZFYILSJYCUQKQNXZXBXMPCJACGJFUKNRYUJFHDXTMDUCITPBUKHOZFNDGDRINOXSENRXEVQPVKNAKUXVIHMGTRYYRSEJTMSWLJZYTXNNQCRDOUEXAKEMVGCFPMGDONJEIBRIGVQYADQTHXLENNYBOYSNFLXTGTXTHQCRRRVLYTXATNVRSABQJRUBHNIJEUGDHVDAYNSEHBOYFGIXZCFJJDUNCOXRNBWAJEUUHDODYENSCNSTJQIUJTQQVQPVNZCZCWKSSUNHKEYEDCXDMQLPOWFEGHLELRWIAERKHHPEPYUEHYPOQMODXAJVESKDZWPGLOCSRTTCPDUYUWILOVPJXWRPCLPJVKWHGEHOOGRNILBGTKMYLEULEVRTQSLAJANQUVHDIFIPJKSBQTWMZQAVIOUTAFVLCHQCZSPMIPUTPCVIZLDFAWZWZWMNSITQQTDCETDGJWGAJPVHMZJWWKSNPOLBRSOTEKTJCPQCKJLHAXQAVRTVHUXUHYGQAMSLVV

qq_YAO_4

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

慕慕0098458

一般写这种先执行一遍查询,里面不带任何操作。看一下数据有无问题。可以看一下if(item.account_login!= undefined&&item.account_login!= null) 里面加一个!=‘’看能走多少
打开App,查看更多内容
随时随地看视频慕课网APP