1

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

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

这对我来说似乎不是最优的,因为每次我删除评论时,整个帖子都会从数据库中获取,并且附加了很多东西。那么,是否可以在不获取父文档的情况下修改子文档?

4

1 回答 1

1

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

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

这是一个很好的可行解决方案,但执行直接请求意味着验证不会像版本控制那样有效。

于 2013-01-19T09:55:11.133 回答