【问题标题】:mongodb inbox structure multi addressesmongodb收件箱结构多地址
【发布时间】: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 没有阅读它。

标签: mongodb data-structures mongoose database


【解决方案1】:

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

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

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

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

【讨论】:

  • 是的,收件人是抄送列表。我可以改变它的名字。谢谢人
猜你喜欢
  • 2017-09-21
  • 1970-01-01
  • 2018-05-14
  • 1970-01-01
  • 2017-06-18
  • 2019-03-09
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
相关资源
最近更新 更多