mongodb收件箱结构多地址
我将在mongodb中创建一个收件箱结构。我在多用户邮件的收件箱模式上遇到一些问题。 我想创建这样的东西,其中收件人包含对象。每个对象都包含userId和一个日志,以了解消息是否为红色。 如果它是一个正确的(有效的!!)结构,用户456如何知道他是否有一些消息要读mongodb收件箱结构多地址,mongodb,data-structures,mongoose,database,Mongodb,Data Structures,Mongoose,Database,我将在mongodb中创建一个收件箱结构。我在多用户邮件的收件箱模式上遇到一些问题。 我想创建这样的东西,其中收件人包含对象。每个对象都包含userId和一个日志,以了解消息是否为红色。 如果它是一个正确的(有效的!!)结构,用户456如何知道他是否有一些消息要读 { userId: "123" ,recipients: [ {userId:123, read:true} ,{userId:456, read:false}
{
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"
}
如果
CC
或To
列表(我假设由接收者
列表表示)不失控且不受约束,则此结构可以工作
要回答初始问题,可以使用$elemMatch:
db.inbox.find({receipients:{$elemMatch:{userId:456,read:false}}})
这应该是一个有效的查询,将返回用户456尚未阅读的所有消息。更多信息:在本例中,用户123编写了第一条消息,而用户456和789没有阅读。之后,用户456向相同的用户(123和789)发送了一条新消息,而用户123和789没有阅读。是的,收件人是抄送列表。我可以改变它的名字。谢谢你,伙计