Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Javascript MongoDb:forEach的好记性明智吗?_Javascript_Node.js_Mongodb_Mongojs - Fatal编程技术网

Javascript MongoDb:forEach的好记性明智吗?

Javascript MongoDb:forEach的好记性明智吗?,javascript,node.js,mongodb,mongojs,Javascript,Node.js,Mongodb,Mongojs,我有很多数据要从mongodb数据库中获取。我不能一次在服务器上加载所有数据,因为它太大了,我会耗尽内存 如果我使用forEach,它会在服务器上获取所有内容并加载所有内容,然后在每个内容上应用该函数吗 或 它将获取第一个元素,应用函数,加载第二个元素,应用函数。。。直到最后一个吗?不,它不会加载所有内容。基本原因如下: > db.hotel.find().forEach function ( func ){ while ( this.hasNext() ) fun

我有很多数据要从mongodb数据库中获取。我不能一次在服务器上加载所有数据,因为它太大了,我会耗尽内存

如果我使用forEach,它会在服务器上获取所有内容并加载所有内容,然后在每个内容上应用该函数吗


它将获取第一个元素,应用函数,加载第二个元素,应用函数。。。直到最后一个吗?

不,它不会加载所有内容。基本原因如下:

> db.hotel.find().forEach
function ( func ){
    while ( this.hasNext() )
        func( this.next() );
}
因此,您可以看到,“幕后”所做的一切都是在标准游标迭代器方法之上提供一个“方便”的包装器

它只是一个助手,无论是在shell中还是在一般的驱动程序函数中


但如果您的“驱动程序”允许,则使用“流式”接口,这是一种更好的方法。

如果您使用的是
cursor
method
。forEach()
,则它应该迭代队列中获取的每个文档。你可以在这里找到关于游标迭代的更多信息,所以你说这是真的“它会获取第一个元素、应用函数、加载第二个元素、应用函数……直到最后一个吗?”