mongodb收件箱结构多地址
Posted
技术标签:
【中文标题】mongodb收件箱结构多地址【英文标题】:mongodb inbox structure multi addresses 【发布时间】:2013-07-13 04:42:21 【问题描述】:我将在 mongodb 中创建一个收件箱结构。对于多用户消息,我在收件箱架构上遇到了一些问题。 我想创建这样的东西,其中收件人包含对象。每个对象都包含 userId 和一个日志,以了解消息是否为红色。 如果它是一个正确(高效!!)的结构,用户 456 如何知道他是否有一些消息要阅读?
userId: "123"
,recipients: [ userId:123, read:true
,userId:456, read:false
,userId:789, read:false ]
,text: "message wrote by user 123"
,
userId: "456"
,recipients: [ userId:123, read:false
,userId:456, read:true
,userId:789, read:false ]
,text: "message wrote by user 456"
【问题讨论】:
更多信息:在本例中,用户 123 写了第一条消息,而用户 456 和 789 没有阅读。之后,用户 456 向相同的用户(123 和 789)写了一条新消息,而用户 123 和 789 没有阅读它。 【参考方案1】:如果CC
或To
列表(我假设由receipients
列表表示)不会失控并不受约束,则此结构可以工作。
要回答您最初的问题,您可以使用 $elemMatch:
db.inbox.find(receipients:$elemMatch:userId:456,read:false)
这应该是一个高效的查询,并将返回用户456
尚未阅读的所有消息。
【讨论】:
是的,收件人是抄送列表。我可以改变它的名字。谢谢人以上是关于mongodb收件箱结构多地址的主要内容,如果未能解决你的问题,请参考以下文章