特定のコレクション内のすべてのドキュメントをループして、ドキュメントを更新しようとしています (ドキュメント内の情報に基づいて)。私はpymongoを使ってpythonでこれを始めましたが、永遠にかかるようです.dbボックスに移動してjavascriptで実行することにしましたが、それでも停止しているようです. 私はクーデター、千の文書について話しているだけです。私が気づいているように見えるのは:
タスクを開始すると、最初の 500 個のオブジェクトがすぐに更新され、しばらくしてから次の 200 個、少し時間が経つとさらに 100 個のオブジェクトが更新され、その後ますます遅くなり始めます。
コードから update 呼び出しを削除すると、ループが問題なく通過するため、更新が何かをフリーズしているように見えます。
私が実行している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());
}