mongod数据库问题
 发布于 7 年前  作者 cllgeek  2900 次预览  最后一次回复是 7 年前  来自 问答 

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

const UserSchema=new mongoose.Schema({
		collectedPosts:[{type:ObjectId,ref:'Post'}],
)}

然后有个用户收藏文章 字段 关联到Post,

但我在Post集合中删除用户收藏的post,User集合 collectedPosts中还是存有删除的post的id,该怎么做到 删除post的时候,也删除用户collectedPosts中收藏的post呢

7 回复
nnliang

mongo的操作基于集合,你这是两个集合…

cllgeek

@nnliang 对啊,我这是两个集合

cllgeek

@nnliang 也就是不能实现我这个需求吗

nnliang

@cllgeek 不能直接达到你的目的,但是可以曲线实现吧,自己写hook

lovegnep

分两步吧,第一步删除post,然后再更新收藏,如下:

	db.users.updateMany({},{$pull:{collectedPosts:postid}})

无法通过一步实现的。

cllgeek

@lovegnep 嗯,这个可以,但是这样会不会性能不好,要查所有的用户

lovegnep

@cllgeek 的确是,复杂度是O(N),在数据量大的时候会影响性能。 感觉完全可以不删除呀,放在用户收藏中也可以。不过要看你具体业务了