0

假设我name经常需要每个用户。与其查询每个文档然后提取这个属性,什么是保持索引的最佳方法,我可以快速调用?

我是否应该添加另一个只是这些属性数组的文档,然后在每次添加或删除用户时手动编辑它?有没有更好的方法使用 mongo 索引或其他东西?

感谢您的任何指导。

4

2 回答 2

1

您可能想要设置某种缓存。我会为此使用redis机器。这样你就可以避免经常去MongoDB。

于 2012-10-28T04:17:33.023 回答
-1

你不需要:

  • 改变查询方式
  • 更改您的架构

MongoDB 和几乎所有其他数据库都有称为索引的东西。这些允许对数据值进行 O(log n) 操作,从而导致更快的查询,不仅如此,它们还被设计为一种数据缓存,并且可以驻留在内存中。

您可以通过以下方式简单地暗示名称索引:

db.uses.ensureIndex({name:1})

我建议您更多地研究数据库的这一面:

这些链接应该可以帮助您入门。索引的理论和实现在所有数据库中基本相同。MongoDB 确实在内存方面做了一些有趣的事情,但除此之外它是相同的。

编辑

我意识到我读的问题有点错误。您想存储所有用户名的列表,因为您一次需要它们。

对于庞大的用户群,我认为 Redis 不能充分地做到这一点(实际上我 90% 肯定它不能),而且 MongoDB 中的任何聚合文档结构以及对于基于内存的大用户而言的容纳它都会很麻烦至少可以说,一个用于容纳结构的内存要求。

我建议您真正考虑一下为什么需要它。您应该真正计划好您的查询场景并考虑需求,您在这里走的是一条奇怪的道路。

于 2012-10-28T09:17:14.797 回答