【问题标题】:Designing mongodb for a chat application?为聊天应用程序设计 mongodb?
【发布时间】:2015-08-20 19:05:17
【问题描述】:

我过去只使用过 mySQL,我真的不确定如何在 mongodb 中设计表。
我基本上是在尝试为一个小聊天应用程序编写后端。
对于这样的案例,结构是否有最佳实践?你会建议我怎么做?

目前我正在考虑这样的事情:

用户

{
    id,
    name,
    status,
    lastActivity,
    chartRoomIds
}

聊天室

{
    id,
    name
}

消息

{
    id,
    timeSent,
    content,
    userId,
    chatRoomId
}

但这意味着您必须浏览所有消息才能仅找到特定聊天室的消息。那么将消息直接存储在聊天室对象中可能会更好吗?

我真的很想看看有经验的人会如何构建这个示例。

【问题讨论】:

    标签: mongodb data-structures database


    【解决方案1】:

    我认为,您只需阅读 MongoDB 文档即可。

    这里描述了基本的 mongoDB 数据建模模式:http://docs.mongodb.org/manual/data-modeling/

    【讨论】:

      【解决方案2】:

      你是一个聊天应用程序,你需要一些实时功能,你可以用流星尝试/原型化一些东西。 Meteor 默认使用 mongo,并为您提供了一些关于 Mongo 和流星等的非常好的教程。

      回答你的问题:

      你必须浏览所有的消息

      是的,但是如果您使用正确的索引,那也没有问题。 如果您将消息存储在聊天室中,则需要从中聚合消息等等..

      你的结构没问题,可以用

      创建索引
      db.messages.ensureIndex('roomId', 1)
      

      索引存储在内存中,因此它会立即按 roomId 过滤消息。试试http://robomongo.org/,它可以让你像 PHPMyAdmin 或 Sequel Pro for MySQL 一样查询你的数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-20
        • 2017-08-16
        • 1970-01-01
        • 2018-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多