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