CNode

mongod数据库问题

问答
Ccllgeek发布于8 年前最后回复8 年前7 回复3105 浏览0 收藏

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

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

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

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

查看回复

回复 (7)

N
nnliang#1·8 年前

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

C
cllgeek#2·8 年前
引用 nnliangmongo的操作基于集合,你这是两个集合...

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

C
cllgeek#3·8 年前
引用 nnliangmongo的操作基于集合,你这是两个集合...

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

N
nnliang#4·8 年前
引用 cllgeek@nnliang 也就是不能实现我这个需求吗

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

L
lovegnep#5·8 年前

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

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

无法通过一步实现的。

L
lovegnep#7·8 年前
引用 cllgeek@lovegnep 嗯,这个可以,但是这样会不会性能不好,要查所有的用户

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

参与回复
登录后即可参与回复。登录