我需要为多房间聊天设置一个方案,使用mongodb进行存储。我目前正在使用 mongoose v2 ,我已经考虑过以下方法:
方法1
1 我究竟如何从特定集合(聊天室)中检索文档?
方法2
1 收藏品是否有最大尺寸?
欢迎任何建议......谢谢你的帮助。
答案 0 :(得分:2)
没有充分的理由在每个聊天室中单独收集。集合的大小是无限的,MongoDB无法从多个集合中查询数据。因此,当您在多个馆藏中分发数据时,您将无法在多个聊天室中分析数据。
答案 1 :(得分:0)
正常收藏没有限制。但是,你真的想永远保存在任何聊天中写的每个字吗?很可能不是。您想保存写入最后1000或10000条消息。甚至100.000。让它成为1.000.000。考虑到聊天消息的平均大小,这不应超过20MB。因此,让它真正安全,并乘以10。
我要做的是为每个聊天室使用capped collection并使用tailable cursors。你不需要害怕太多的联系。平均mongo服务器可能需要几百个。这些查询可以很容易地成为shown in the Mongoose docs。
这种方法有一些优点:
至于如何操作:只需在每个聊天室中创建一个连接,将它们保存在关联数组中的应用程序级别,并将聊天室作为键名。使用连接为每个请求创建新的tailable游标。使用XHR请求聊天数据。作为流响应。相应地处理。