请教大家一个问题,mongodb数据库中,在fs.files和fs.chunks表中可以根据id查询对应的数据,那么我想实现 这样一个功能,就是根据fs.files中的id批量查询fs.chunks对应的id,如果没有,那么就删掉fs.files中的id,请问如何批量处理来实现呢?
以上是fs.files中的文档
上面为fs.chunks中的文档
分两步:
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}});```
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。