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】:

如果CCTo 列表(我假设由receipients 列表表示)不会失控并不受约束,则此结构可以工作。

要回答您最初的问题,您可以使用 $elemMatch:

db.inbox.find(receipients:$elemMatch:userId:456,read:false)

这应该是一个高效的查询,并将返回用户456 尚未阅读的所有消息。

【讨论】:

是的,收件人是抄送列表。我可以改变它的名字。谢谢人

以上是关于mongodb收件箱结构多地址的主要内容,如果未能解决你的问题,请参考以下文章

建立Wall系统的数据库/Schema结构

Firestore 聊天应用程序:这是多收件人消息的有效文档结构吗?

如何将消息发送给多个收件人

AKKA Inbox收件箱

SendMail发送回执及读取收件箱

PHP 邮件不在“收件人”标题中显示“收件人”