说我经常需要每个用户name
。而不是查询每个文档,然后选择这个属性,保留索引的最佳方法是什么,我可以快速调用?
我是否应该添加另一个仅包含这些属性数组的文档,然后在每次添加或删除用户时手动编辑它?有没有更好的方法使用mongo索引或什么?
感谢您提供任何指导。
答案 0 :(得分:1)
您可能想要设置某种caché。我会使用redis机器。这样你就可以避免经常去MongoDB。
答案 1 :(得分:-1)
您不需要:
MongoDB和几乎任何其他数据库都有一些叫做索引的东西。这些允许对数据值进行O(log n)操作,这导致更快的查询,不仅如此,它们被设计为对数据的一种缓存并且可以驻留在内存中。
您只需在名称上隐含一个索引:
db.uses.ensureIndex({name:1})
我建议你更多地研究数据库的这一面:
这些链接可以帮助您入门。所有数据库中索引的理论和实现大致相同。 MongoDB确实用内存做了一些有趣的事情,但除此之外它是相同的。
我意识到我认为这个问题有点不对劲。您希望存储所有用户名称的列表,因为您需要一次性使用所有用户名称。
对于庞大的用户群,我不认为Redis可以做到这一点(实际上我90%确定它不能)并且MongoDB中的任何聚合文档结构也不能用于基于内存的大型用户至少可以说是麻烦,一个是关于容纳结构的记忆要求。
我建议你真的想到你为什么需要它。你应该真正计划你的查询场景并考虑要求,你将走这条奇怪的道路。