我正在尝试遍历特定集合中的所有文档并更新文档(基于文档中已有的信息)。我开始使用 pymongo 在 python 中执行此操作,但它似乎需要永远,所以我决定将它移动到 db 盒并在 javascript 中运行它,但它似乎仍然停滞不前。我只是在谈论一场政变,一千份文件。我似乎注意到的是:
开始任务,前 500 个对象会立即更新,片刻之后,接下来是 200 个,再过一点,再有 100 个,然后它开始越来越慢。
如果我从我的代码中删除更新调用,它会很好地通过循环,所以显然我的更新似乎冻结了一些东西。
这是我正在运行的js:
mydb = db.getSisterDB(DB_NAME);
var cursor = mydb.user.find({is_registered:true}).limit(3000);
while (cursor.hasNext()) {
var u = cursor.next();
/* fix property on user doc */
mydb.user.update({ _id: u._id }, u);
print(cursor.objsLeftInBatch());
}