如何在没有在Mongoose中获取父项的情况下对子文档执行操作?

现在,如果我想删除一个子文档,我这样做:

Post.findById(post_id).exec(function(err, post) { post.comments.remove({'_id': comment_id}); post.save(function(err) { res.end("Hooray!"); }); }); 

这对我来说似乎并不是最理想的,因为每次删除评论时,整个post都会从DB中提取出来,并且附加了很多东西。 那么,是否可以修改子文档而不用提取父文档呢?

根据文档,如果您想更新文档而不提取它,则必须手动执行更新请求。 在我的情况下,将导致这样的代码:

 Post.update({'_id': post_id}, {$pull: {'comments': {'_id': comment_id}}}).exec(function(err){ console.log('Hooray!'); }); 

这是一个很好的可行解决scheme,但是执行直接请求意味着validation不会和版本控制一样好。