为聊天应用程序设计mongodb?

时间:2015-08-20 19:05:18

标签: mongodb data-structures database

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

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

用户

{
    id,
    name,
    status,
    lastActivity,
    chartRoomIds
}

聊天室

{
    id,
    name
}

消息

{
    id,
    timeSent,
    content,
    userId,
    chatRoomId
}

但这意味着您必须浏览所有消息才能找到特定聊天室的消息。也许最好将消息直接存储在聊天室对象中?

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

2 个答案:

答案 0 :(得分:2)

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

以下介绍了基本的mongoDB数据建模模式:http://docs.mongodb.org/manual/data-modeling/

答案 1 :(得分:1)

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

回答你的问题:

  

你必须浏览所有信息

是的,但如果你使用正确的索引,那也没问题。 如果您将消息存储在chatRooms中,则需要聚合来自它的按摩等等。

您的结构正常,您可以使用

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

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