开发者社区> 问答> 正文

mongodb批量查询和删除的实现

请教大家一个问题,mongodb数据库中,在fs.files和fs.chunks表中可以根据id查询对应的数据,那么我想实现 这样一个功能,就是根据fs.files中的id批量查询fs.chunks对应的id,如果没有,那么就删掉fs.files中的id,请问如何批量处理来实现呢?
1
以上是fs.files中的文档
2
上面为fs.chunks中的文档

展开
收起
落地花开啦 2016-02-21 18:21:07 7273 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    分两步:
    1.从fs.chunks中收集所有的files_id,装入到一个JSON对象中,目的是去重复,然后再转入到一个数组里;
    2.从fs.files中删除 _id不在这个数组里 的所有文档。
    在mongo shell 下执行以下js就可以了:

    var cursor = db.fs.chunks.find({},{_id:0,files_id:1});
    var fileIdObj = {};
    while(cursor.hasNext()) {var doc = cursor.next(); fileIdObj[doc.files_id.str]=doc.files_id;}
    var fileIds = [];
    for(var x in fileIdObj) fileIds.push(fileIdObj[x]);
    
    db.fs.files.remove({_id:{$nin:fileIds}});```
    
    2019-07-17 18:46:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
MongoDB多数据中心的方案选型之路 立即下载
阿里云MongoDB云服务构建 立即下载
饿了么高级架构师陈东明:MongoDB是如何逐步提高可靠性的 立即下载