我从mongodb数据库中获取了大量数据。我无法在服务器上一次加载所有数据,因为它太大而且我的内存不足。
如果我使用forEach,它会获取所有内容并加载服务器上的所有内容,然后在每个上面应用该函数吗?
OR
它会获取第一个元素,应用函数,加载第二个元素,应用函数......直到最后一个元素?
答案 0 :(得分:2)
不,它不会加载所有内容。这基本上就是为什么:
> db.hotel.find().forEach
function ( func ){
while ( this.hasNext() )
func( this.next() );
}
所以你看到“引擎盖下”所做的就是为标准的游标迭代器方法提供一个“方便”的包装。
它只是一个帮手,无论是在shell中还是在一般的驱动程序函数中。
但如果您的“驱动程序”允许,则使用“流式”界面代替,这是一种更好的方法。