【发布时间】:2013-02-16 06:04:58
【问题描述】:
我正在尝试通过 Python 从 MongoDB 查询大量结果。我通过 JavaScript 执行此操作,因为我想在树状结构中获得类似于孙辈的东西。我的代码如下所示:
col = db.getCollection(...)
var res = new Array();
col.find( { "type" : ["example"] } ).forEach(
function(entry)
{
v1 = col.find( {"_id" : entry["..."]} )
... (walk through the structure) ...
vn = ...
res.push([v1["_id"], vn["data"]]);
}
);
return res;
现在,我遇到了问题,结果数组变得非常(太大)并且超出了内存。有没有办法产生结果而不是将它们推入数组?
【问题讨论】:
-
使用
next代替forEach?一次只做一个结果。 -
您能否说明您希望通过产量实现什么目标?如果目标是批量执行操作,您可以保留已推送到数组的记录的计数器。当达到批量大小时,您将对当前记录集进行操作,然后清除数组。
-
感谢您的帮助。我想在服务器端做一个复杂的查询,然后让所有结果在 python 端使用。如果我说得对,那么只能在服务器端使用小型阵列或将其中一个返回,这样就需要多个查询。我想在客户端处理所有结果,因此将结果逐批返回。
标签: javascript python mongodb yield