在MongoDB中删除关系数据-从数组中删除特定元素

时间:2018-06-29 18:48:37

标签: node.js database mongodb mongoose relationship

我有一组用户和一组文章。用户将多个文章放在一个数组中。现在,我试图从MongoDB中用户的文章数组中删除文章。到目前为止,我有

exports.delete = function(req, res, next) {
  const articleId = req.params.id;

  Article.findOneAndRemove({_id: articleId})
    .then((deletedArticle)=> {
      const authorId = deletedArticle.author;
      console.log("AUTHOR:"+authorId);

      User.update( { _id: authorId }, { $pull: { articles: [ _id: deletedArticle.id ] } }  )


      res.status(204).send(deletedArticle)
    })
    .catch(next);
}

确实删除了这篇文章本身,但是没有引用保存在User对象所保存的数组中的文章。我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

尝试将查询中的方括号更改为大括号:

User.update( { _id: authorId }, { $pull: { articles: { _id: deletedArticle.id } } } )

显然,这将要求articles数组中的_id与article集合相同,这取决于您如何填充数组(我觉得您在做的那部分是对的,但只是想提一提这种可能性前)。