【发布时间】:2013-03-08 21:43:24
【问题描述】:
下面的代码有问题。我尝试在“链接”集合中获取 max(seq)。运行下面的代码后,我收到“FATAL ERROR: JS Allocation failed - process out of memory”错误。我怎样才能克服这个问题?感谢您的回复。
db.collection('links', function(err, collection) {
var options = { "limit": 1, "sort": [['seq','desc']]};
collection.find({}, options , function(err, docs) {
console.log("Returned #" + docs.seq + " documents");
});
});
注意:顺便说一句,节点运行后内存使用量增加得惊人。
【问题讨论】:
-
你有
seq的索引吗?如果不是,则该查询必须将您的整个集合加载到内存中。 -
我没有索引。我尝试将 seq 值存储在另一个集合中。我猜它可能会加快执行时间。
-
还需要注意的是,内存排序在有或没有 JS 的情况下都有限制,如果大约 32 兆。