MongoDB shell:for循环暂停没有明显的原因

时间:2017-05-25 02:13:44

标签: javascript mongodb shell

我正在运行一个脚本来删除MongoDB中的重复项。这并不简单,因为每个集合中都有大量的重复数据(数百万)。

下面脚本中的重复项只是一个要删除的文档ID(我构建的)。

我观察到的奇怪行为是MongoDB shell有时会停止运行并暂停。我通过跟踪进程的CPU使用情况注意到这一点,它会不时突然降至0。

如果我然后在shell中按ENTER键,它将恢复。 我不知道是什么导致了这个,但如果我想自动执行此操作,这对我来说是一个问题。有谁知道这背后可能是什么?

谢谢!

  var i,j,tempDuplicates,chunk = 1000;
  for (i=0,j=duplicates.length; i<j; i+=chunk) {
      print( "Deleted " + i.toString() + " records from "+ collname)
      tempDuplicates = duplicates.slice(i,i+chunk);
      // Flatten the array using reduce js function
      tempDuplicates = tempDuplicates.reduce(function(a,b){ return a.concat(b); }); 
      // Remove elements in tempDuplicates
      db[collname].remove({_id:{$in:tempDuplicates}})
  }

0 个答案:

没有答案