Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 我应该如何保存用户信息的索引?_Node.js_Mongodb_Node Mongodb Native - Fatal编程技术网

Node.js 我应该如何保存用户信息的索引?

Node.js 我应该如何保存用户信息的索引?,node.js,mongodb,node-mongodb-native,Node.js,Mongodb,Node Mongodb Native,经常说我需要每个用户的名字。与其查询每个文档然后提取这个属性,我能快速调用的保存索引的最佳方法是什么 我是否应该添加另一个仅是这些属性数组的文档,然后在每次添加或删除用户时手动编辑它?有没有更好的方法使用mongo索引之类的 谢谢你的指导 您可能想设置一些caché。我会用机器来做的。这样可以避免频繁访问MongoDB。您不需要: 改变你的查询方式 更改您的模式 MongoDB和几乎所有其他数据库都有一种称为索引的东西。它们允许对数据值进行O(logn)操作,从而导致更快的查询,不仅如此,它

经常说我需要每个用户的名字。与其查询每个文档然后提取这个属性,我能快速调用的保存索引的最佳方法是什么

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


谢谢你的指导

您可能想设置一些caché。我会用机器来做的。这样可以避免频繁访问MongoDB。

您不需要:

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

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

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

我建议您进一步研究数据库的这方面:

这些链接应该让你开始。索引的理论和实现在所有数据库中基本相同。MongoDB确实用内存做了一些有趣的事情,但除此之外,它是一样的

编辑 我意识到我把这个问题读错了一点。您希望存储所有用户名的列表,因为您一次需要所有用户名

对于一个庞大的用户群,我不认为Redis能够充分做到这一点(事实上我90%确信它不能做到),MongoDB中的任何聚合文档结构和外壳也不能做到这一点,至少对于一个基于内存的大用户来说,这会是一个麻烦的问题,一个是针对外壳结构的内存需求


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

你是在尝试只为当前登录的用户存储信息吗?这是我需要的关于所有用户的特定信息,而不仅仅是登录的信息。这不是数据库的用途吗?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。