mongod数据库问题
最近遇到一个问题,如下描述: 假设我有一个用户文档模型,如:
const UserSchema=new mongoose.Schema({
collectedPosts:[{type:ObjectId,ref:'Post'}],
)}
然后有个用户收藏文章 字段 关联到Post,
但我在Post集合中删除用户收藏的post,User集合 collectedPosts中还是存有删除的post的id,该怎么做到 删除post的时候,也删除用户collectedPosts中收藏的post呢
7 回复
mongo的操作基于集合,你这是两个集合…
@nnliang 对啊,我这是两个集合
@nnliang 也就是不能实现我这个需求吗
@cllgeek 不能直接达到你的目的,但是可以曲线实现吧,自己写hook
分两步吧,第一步删除post,然后再更新收藏,如下:
db.users.updateMany({},{$pull:{collectedPosts:postid}})
无法通过一步实现的。
@lovegnep 嗯,这个可以,但是这样会不会性能不好,要查所有的用户
@cllgeek 的确是,复杂度是O(N),在数据量大的时候会影响性能。 感觉完全可以不删除呀,放在用户收藏中也可以。不过要看你具体业务了