Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
MongoDB-这是否有效?_Mongodb - Fatal编程技术网

MongoDB-这是否有效?

MongoDB-这是否有效?,mongodb,Mongodb,我在mongodb中收集了users。我正在使用node/mongodbapi 在my node.js中,如果我去: var users=db.collection(“用户”) 然后 users.findOne({…}) 这是惯用的和有效的吗 我希望避免将所有用户加载到应用程序内存中。是的,应该只将一个用户加载到内存中 collection对象正是这样,当您创建一个新的collection对象时,它不会返回所有用户,只有当您使用findOne或从find的返回中迭代光标时,才应该将一个用户加载到

我在mongodb中收集了
users
。我正在使用node/mongodbapi

在my node.js中,如果我去:

var users=db.collection(“用户”)

然后

users.findOne({…})

这是惯用的和有效的吗


我希望避免将所有用户加载到应用程序内存中。

是的,应该只将一个用户加载到内存中


collection对象正是这样,当您创建一个新的collection对象时,它不会返回所有用户,只有当您使用
findOne
或从
find
的返回中迭代光标时,才应该将一个用户加载到内存中


collection对象正是这样,当您创建一个新的collection对象时,它不会返回所有用户,只有当您使用
findOne
或在Mongo中从
find
的返回中迭代光标时,
collection.find()
才返回
光标
,它是与查询匹配的结果的抽象表示形式。在您通过调用
cursor.next()
在光标上迭代之前,它不会通过连线返回您的结果。例如,在对其进行迭代之前,可以调用
cursor.limit(x)
来限制允许返回的结果数

collection.findOne()
实际上只是
collection.find().limit(1.next()
的一个快捷版本。因此,绝不允许光标返回多个结果

如前所述,
集合
对象本身是一个门面,允许访问集合,但它不在内存中保存任何实际文档

findOne()
非常有效,而且确实是惯用的,尽管它更多地用于开发/调试,而不是实际的应用程序代码。它在CLI中非常有用,但是一个真正的应用程序需要多久从一个集合中抓取一个文档?我能想到的唯一情况是,给定的查询只能返回一个文档(即有效的主键)

进一步阅读: ,

在Mongo中,
collection.find()
返回一个
光标,它是与查询匹配的结果的抽象表示形式。在您通过调用
cursor.next()
在光标上迭代之前,它不会通过连线返回您的结果。例如,在对其进行迭代之前,可以调用
cursor.limit(x)
来限制允许返回的结果数

collection.findOne()
实际上只是
collection.find().limit(1.next()
的一个快捷版本。因此,绝不允许光标返回多个结果

如前所述,
集合
对象本身是一个门面,允许访问集合,但它不在内存中保存任何实际文档

findOne()
非常有效,而且确实是惯用的,尽管它更多地用于开发/调试,而不是实际的应用程序代码。它在CLI中非常有用,但是一个真正的应用程序需要多久从一个集合中抓取一个文档?我能想到的唯一情况是,给定的查询只能返回一个文档(即有效的主键)

进一步阅读: ,

谢谢。为什么我需要以这种方式指定集合。我不能简单地直接向数据库提供查询。e、 g.
db.query({/*我的查询可能涉及多个集合*/})
?@Ben,因为mongodb服务器无法在同一空间中查询多个集合/命令。每个集合一次需要一个命令。Sammaye-您必须在应用程序内存中组合集合查询的结果吗?@Ben的确,MongoDB没有JointHanks。为什么我需要以这种方式指定集合。我不能简单地直接向数据库提供查询。e、 g.
db.query({/*我的查询可能涉及多个集合*/})
?@Ben,因为mongodb服务器无法在同一空间中查询多个集合/命令。每个集合一次需要一个命令。Sammaye-您必须在应用程序内存中组合集合查询的结果吗?@Ben确实,MongoDB没有联接