当前位置:  开发笔记 > 编程语言 > 正文

如何使用MongoDB跟踪私人消息系统?

如何解决《如何使用MongoDB跟踪私人消息系统?》经验,为你挑选了0个好方法。

以facebook的私人消息系统为例,您必须跟踪消息内容的发送方和接收方.如果我使用的是MySQL,我会有多个表,但是对于MongoDB,我会尽量避免这一切.我正在努力想出一个可以扩展并且易于维护的"好"模式.如果我使用的是mysql,我会有一个单独的表来引用用户和消息.见下文 ...

个人资料表

user_id
first_name
last_name

消息表

message_id
message_body
time_stamp

user_message_ref表

user_id (FK)
message_id (FK)
is_sender (boolean)

使用上面列出的模式,我可以查询"Bob"可能拥有的任何消息,无论他是收件人还是发件人.

现在,如何将其转换为适用于MongoDB的模式.我想我会有一个单独的集合来保存消息.问题是,我如何区分发件人和收件人?如果Bob登录,我该查询什么?根据Bob是否发起了电子邮件,我不想查询"发件人"和"收件人"只是为了查看该邮件是否属于该用户.

我点击了MongoDB的消息组,并找到了可能有用的东西.每条消息都将被视为"博客"帖子.创建消息时,将两个用户(无论最初发送者/接收者最初)添加到数组中.之后的每个响应都将被视为注释,该注释将插入到数组中.

留言
{
    "_id" : ,
    "users" : ["bob", "amy"],
    "user_msgs" :
        [
            { 
                "is_sender" : "bob",
                "msg_body" : "Hi Amy, how are you?!",
                "timestamp" : 
            }
            { 
                "is_sender" : "amy",
                "msg_body" : "Bob, long time no see, how is the family?!",
                "timestamp" : 
            }
        ]
}

这样我就可以查询涉及"Bob"的消息,并循环访问"user_msgs"数组.我将能够告诉发件人是谁,并按时间戳排序.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有