【问题标题】:How to perform operation on subdocuments without fetching a parent in Mongoose?如何在不获取 Mongoose 中的父级的情况下对子文档执行操作?
【发布时间】:2013-02-03 20:05:39
【问题描述】:

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

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

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

【问题讨论】:

  • 是的,将 post 和 cmets 放在 2 个单独的文档上……否则不。

标签: javascript node.js mongodb mongoose


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2018-12-01
    • 2013-07-11
    相关资源
    最近更新 更多