我的MongoDB文件夹集合如下所示:
我可以使用moongose并且只有id:55(文件夹1)从db中移除所有孩子吗? (文件夹2,文件夹3,文件夹4,文件夹5,文件夹6)和文件夹1,或获取ID 10(文件夹3)并删除文件夹3,文件夹4,文件夹5?
谢谢
答案 0 :(得分:0)
在纯mongo中,不可能自动执行,但如果你使用mongoose,你可以使用post('remove')
钩子。
folderSchema.post('remove', function(removedFolder) {
folderModel.find({ parent: removedFolder.id }, function(err, subfolders) {
subfolders.forEach(function(subfolder) {
subfolder.remove();
})
})
});
请记住,只有在mongoose对象上调用.remove()
方法后才会触发该钩子。这就是为什么在上面我们需要获取所有子文件夹并单独删除它们,而只是调用:
folderModel.remove({ parent: removedFolder.id })
您可以在此处阅读有关猫鼬钩子的更多信息:http://mongoosejs.com/docs/middleware.html