我有一个包含学生数据的简单集合,我需要根据一些参数删除一些记录。我从 mongoshell 执行了以下操作
for(i=0;i<200;i++) {
var rec = db.grades.find({student_id:i,type:'homework'}).sort({score:1}).limit(1)
db.grades.remove(rec)
}
理想情况下,它应该删除所有 student_ids 类型作业的最低分数。显然,只有 find 参数中的最后 2 条记录(student_id:199)被清除,其余的仍然存在。
db.grades.find({student_id:10,type:'homework'}).sort({score:1}).limit(1)
{ "_id" : ObjectId("50906d7fa3c412bb040eb5a1"), "student_id" : 10, "type" : "homework", "score" : 6.094174990746648 }
是因为 JS / Mongo 的异步特性吗?解决相同问题的其他替代方法是什么?