获取mongodb集合中的max元素会引发异常

时间:2013-03-08 12:18:19

标签: node.js mongodb

我遇到以下代码的问题。我尝试在'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");
        }); 
}); 

注意:顺便说一句,运行后节点的内存使用量大大增加。

1 个答案:

答案 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");
});