Node.js 我应该如何保存用户信息的索引?
经常说我需要每个用户的名字。与其查询每个文档然后提取这个属性,我能快速调用的保存索引的最佳方法是什么 我是否应该添加另一个仅是这些属性数组的文档,然后在每次添加或删除用户时手动编辑它?有没有更好的方法使用mongo索引之类的Node.js 我应该如何保存用户信息的索引?,node.js,mongodb,node-mongodb-native,Node.js,Mongodb,Node Mongodb Native,经常说我需要每个用户的名字。与其查询每个文档然后提取这个属性,我能快速调用的保存索引的最佳方法是什么 我是否应该添加另一个仅是这些属性数组的文档,然后在每次添加或删除用户时手动编辑它?有没有更好的方法使用mongo索引之类的 谢谢你的指导 您可能想设置一些caché。我会用机器来做的。这样可以避免频繁访问MongoDB。您不需要: 改变你的查询方式 更改您的模式 MongoDB和几乎所有其他数据库都有一种称为索引的东西。它们允许对数据值进行O(logn)操作,从而导致更快的查询,不仅如此,它
谢谢你的指导 您可能想设置一些caché。我会用机器来做的。这样可以避免频繁访问MongoDB。您不需要:
- 改变你的查询方式
- 更改您的模式
db.uses.ensureIndex({name:1})
我建议您进一步研究数据库的这方面:
我建议你好好想想你为什么需要它。你真的应该计划好你的查询场景并考虑需求,你在这里走的是一条奇怪的道路。你是在尝试只为当前登录的用户存储信息吗?这是我需要的关于所有用户的特定信息,而不仅仅是登录的信息。这不是数据库的用途吗?xD我想我不明白。是否在name属性上放置索引
db.users.ensureIndex({name:1})
@StephenSarcsamKamenar我如何查询它并获得一个我可以使用的数组??执行上面的索引并执行查询:db.users.find({},{fields:{name:1}}).toArray(函数(err,users){callback(null,users.map(函数(user){return user.name}))})
好的,我可以按值确定索引。那么如何查询数据库以获得所有名称的列表?不管它是否被编入索引,我还是需要每一个医生都去做一次尝试。你想解释一下吗?不管怎样,你说的“轰”是什么意思?你必须对redis和一系列文档客户端做同样的事情,我们谈论的是多少用户,这永远不会扩展到100K以上的用户。我不尝试索引值,以便更快地检索它们。我需要每个文档中所有特定值的数组。我想,当我添加/删除/更改任何文档时,我将只更新保存在mongo中的这些值的数组,但我想看看mongo是否有任何方法可以对集合执行此操作。@我想这取决于数据的大小。您可以运行查询来获取所有用户名,然后将其存储在MongoDB中的一行中,正如您所说的,这是MongoDB中唯一的方法。但是我想说这听起来还是很奇怪,我感觉数据可能会扩展到你会意识到你必须彻底重新思考这个问题的地步。我最后做了很多事情,现在把它存储在内存中。我在启动时查询mongo一次,然后在add/remove mongo方法中从索引中添加remove。