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