Я не думаю, что есть простой способ сделать это, кроме выполнения поиска и последующей итерации с помощью forEach.Так что-то вроде:
function removeChunkIfNoOwner(chunk){
//Look for the parent file
var parentCount = db.fs.files.find({'_id' : chunk.files_id}).count();
if (parentCount === 0 ){
db.fs.chunks.remove({'_id': chunk._id});
print("Removing chunk " + chunk._id);
}
}
db.fs.chunks.find().forEach(removeChunkIfNoOwner);
Вы можете увидеть, что этот подход должен работать, если вы создадите такую функцию:
function listParentFile(chunk){
var parent = db.fs.files.findOne({'_id' : chunk.files_id});
printjson(parent);
}
db.fs.chunks.find().forEach(listParentFile);