加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用shell从Mongodb中删除记录

发布时间:2020-12-16 01:33:25 所属栏目:安全 来源:网络整理
导读:我有一个填充了学生数据的简单集合,我需要根据一些参数删除一些记录.我从mongo shell执行了以下操作 for(i=0;i200;i++) { var rec = db.grades.find({student_id:i,type:'homework'}).sort({score:1}).limit(1) db.grades.remove(rec)} 理想情况下,它应该删
我有一个填充了学生数据的简单集合,我需要根据一些参数删除一些记录.我从mongo shell执行了以下操作
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的aysnchorous性质?解决这个问题的其他选择是什么?

rec不是文档,它是数据库游标.您需要从中实际获取文档:
for(i=0;i<200;i++) {
    var cur = db.grades.find({student_id:i,type:'homework'}).sort({score:1}).limit(1);
    var actualDoc = cur.next();
    db.grades.remove(actualDoc);
}

否则,您正在尝试根据光标属性删除文档,这不是您想要的.另见http://docs.mongodb.org/manual/core/read-operations/#cursors.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读