2

我对下面的代码有疑问。我尝试在“链接”集合中获取 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");
        }); 
}); 

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

4

1 回答 1

1

为您的集合添加一个索引,seq这样 Mongo 就不必将整个集合加载到内存中进行排序。

此外,在当前代码中使用findOne而不是find作为参数实际上是光标对象,而不是带有 max 的文档。如:docsseq

var options = { "sort": [['seq','desc']] };
collection.findOne({}, options , function(err, doc) {
    console.log("Returned #" + doc.seq + " documents");
}); 
于 2013-03-08T13:43:24.787 回答