mongod数据库问题
发布于 6 年前 作者 cllgeek 2294 次浏览 来自 问答

最近遇到一个问题,如下描述: 假设我有一个用户文档模型,如:

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),在数据量大的时候会影响性能。 感觉完全可以不删除呀,放在用户收藏中也可以。不过要看你具体业务了

回到顶部