Javascript 您可以存储对mongo集合的引用吗?

Javascript 您可以存储对mongo集合的引用吗?,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,在文件的顶部,我可以放一些类似于 var collection=db.mongo.collection'test',functionerr,collection{return collection} 然后在任何文件函数中使用collection.find等 我想我的问题是。。。集合是对集合的引用还是数据的副本 如果集合中的数据发生更改,我是否仍会通过查询集合变量获取最新数据 谢谢 集合是集合对象的引用。在你发布一个find或findOne之前,你手中没有真正的数据。即使如此,它仍然返回一个游标对

在文件的顶部,我可以放一些类似于

var collection=db.mongo.collection'test',functionerr,collection{return collection}

然后在任何文件函数中使用collection.find等

我想我的问题是。。。集合是对集合的引用还是数据的副本

如果集合中的数据发生更改,我是否仍会通过查询集合变量获取最新数据


谢谢

集合是集合对象的引用。在你发布一个find或findOne之前,你手中没有真正的数据。即使如此,它仍然返回一个游标对象,而集合对象始终保持不变

同时存储集合或游标不会存储数据。请记住,您可能要处理数百万条记录。处理数据本身可能会占用服务器内存。相反,mongo返回游标和引用供您过滤。在PHP中,有一个名为迭代器_to_array的函数,可以将光标传递给它,并将其转换为数据数组。在javascript中,我不知道是否有这样的函数。但我想这样的函数是没有意义的。过滤信息,直到您拥有可管理的数据大小,然后在光标上迭代并执行您的操作。如果您有一个配置数组之类的东西,可以插入多个文档,尝试将所有内容存储在一个文档中,并使用findOne函数获取它


但最后,我想这只是一个设计问题,您的数据是否可以过滤。

问题更多的是关于是否应该将集合引用存储在变量中,或者是否应该每次都打开它,模式如下:db.mongo.collection'test',functionerr,collection{collection.find};这可能更像是一个节点问题,因为我不确定事情是否与php的sync i/oOh行为相同。由于它只是一个指针,为了方便起见,您可以将其存储在var上。这是一个节点问题。假设应用程序将运行很长时间,并且不像php脚本那样,如果您经常使用集合,那么可以将其存储在一个变量上。如果您在它们之间执行两个连续的查询和数据更改,您将得到两个不同的结果集或一个指向不同结果集的光标。