我在mongoDB中的整个数据集(大约300万个文档)上运行以下查询,以将字符串的用户标识更改为ints。该查询似乎并没有完成:将字符串更改为mongoDB中的整数需要很长的时间
var cursor = db.play_sessions.find()
while (cursor.hasNext()) {
var play = cursor.next();
db.play_sessions.update({_id : play._id}, {$set : {user_id : new NumberInt(play.user_id) }});
}
我运行在相同的数据集此查询并比较迅速恢复:
db.play_sessions.find().forEach(function(play){
if (play.score && play.user_id && play.user_attempt_no && play.game_id && play.level && play.training_session_id) {
print(play.score,",",play.user_id,",",play.user_attempt_no,",",play.game_id,",",play.level,",",parseInt(play.training_session_id).toFixed());
} else if (play.score && play.user_id && play.user_attempt_no && play.game_id && play.level) {
print(play.score,",",play.user_id,",",play.user_attempt_no,",",play.game_id,",",play.level);
};
});
我明白我在第一个查询写入数据库,但为什么第一个查询似乎永远不会返回,而第二个查询却相对较快呢?第一个查询中的代码有问题吗?