|
|
1
6
假设您有3条要检索首选项的消息,您可以通过以下方式获取它们:
如果您所需要的只是读/未读,您可以将其与MongoDB的upsert功能一起使用,因此除非用户实际阅读了每条消息,否则您不会为每条消息创建prefs,然后基本上您使用自己的唯一id创建prefs对象,并将其upsert到MongoDB中。如果你想要更多的灵活性(比如说标签或文件夹),你可能想要为每个消息接收者做PREF。例如,您可以添加:
到prefs对象,然后要获取所有标记有“tech stuff”的邮件的所有prefs,您可以执行以下操作:
然后,您可以使用在prefs中找到的消息id来查询和查找所有对应的消息:
如果你想做一些事情,比如计算每个“标记”有效包含的消息数量,这可能会有点棘手。如果只是几个标签,你可以添加
|
|
|
2
4
如果只存储一个简单的布尔值(如read/unread),另一种方法是在每个文档中嵌入一个数组,该数组包含已读用户的列表。
然后,您应该能够索引该字段,以便快速查询由用户和读取文档的用户读取的文档。
但是,我发现我经常查询
不
已经被一个特定的用户读过了,在这种情况下,我想不出任何可以使用索引的解决方案。我想不同时拥有这两样东西是不可能做到这么快的
|