我有一個類似於微博的表, 功能是想讓用戶看過這條微博就不再顯示了.
weibo: {type:String, default:null}
read: {type:objid,default: null}
然後循環對比嗎? 實在想不通了 求救.
A 是訊息表, B 是已讀, C 是用戶表.
A 表查詢的時候 類似 A._id != (B.read = true and C.uid = 1).readid
{ "_id": ObjectId(12345) , "title": "shajiquan.com" }
{ "_id": ObjectId(112233445), "username": "shajiquan.com" }
{ "user_id": ObjectId(12345), "topic_id": ObjectId(67890) }
# 某用户 阅读过的 has_read = db.read.find({'user_id':USER_ID},{'topic_id':1}) has_read = [i.get('topic_id') for i in list(has_reads)] # 某用户 没有阅读过的 topics = db.topics.find({'topic_id':{'$nin':has_read}}) topics = list(topics)
顯示時只查詢read為false的就行了啊
topic 表
user 表
read 表
顯示時只查詢read為false的就行了啊