MongoDB删除用户删除用户时创建的所有文档

时间:2018-06-12 09:44:29

标签: node.js mongodb mongoose

我正在研究MongoDB(mongoose)和NodeJS。我有个问题。我是一个RESTful API。我有用户模型(集合)和评论模型(集合)。用户创建评论,并将用户和用户的评论与用户的_id相关联。我希望在删除用户时删除所有评论。我怎样才能在MongoDB中做到这一点?我在Google上搜索了2天,但是我找不到一个好的来源,查看了MongoDB手册文档,但我没有找到任何内容。

请帮帮我。谢谢,祝你有个美好的一天......

1 个答案:

答案 0 :(得分:2)

MongoDB不支持集合之间的内置关系和事务。

删除相关评论(我认为每个userId都有Comment字段):

db.comments.remove({userId: removedUserId})

如果您在User中收集了评论ID,则:

db.comments.remove({id: {$in: collectionOfCommentIds}})

Mongoose支持middlewares。但请注意

  

remove()没有查询钩子,仅适用于文档。

因此,您可以定义remove挂钩,以便与user.remove()一起使用。但不适用于User.remove({_id: userId})

userSchema.post(`remove`, (user) => {
    Comments.remove({userId: user._id})
})