我遇到以下代码的问题。我尝试在'links'集合中获得max(seq)。运行下面的代码后,我得到“致命错误:JS分配失败 - 处理内存不足”错误。我怎样才能克服这个问题?谢谢你的回复。
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");
});
});
注意:顺便说一句,运行后节点的内存使用量大大增加。
答案 0 :(得分:1)
在seq
上添加一个索引到你的集合中,这样Mongo就不必将整个集合加载到内存中进行排序。
此外,使用findOne
代替find
,因为当前代码中的docs
参数实际上是游标对象,而不是具有最大seq
的文档。如:
var options = { "sort": [['seq','desc']] };
collection.findOne({}, options , function(err, doc) {
console.log("Returned #" + doc.seq + " documents");
});