我过去只使用过mySQL,我真的不确定如何在mongodb中设计表格。
我基本上是想为一个小聊天应用程序编写后端
对于这样的案例,是否有类似结构的最佳实践?你会如何建议我这样做?
目前我正在考虑这样的事情:
用户
{
id,
name,
status,
lastActivity,
chartRoomIds
}
聊天室
{
id,
name
}
消息
{
id,
timeSent,
content,
userId,
chatRoomId
}
但这意味着您必须浏览所有消息才能找到特定聊天室的消息。也许最好将消息直接存储在聊天室对象中?
我真的很想看看有经验的人如何构建这个例子。
答案 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一样查询数据库。