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代わりに使用するのは、実際にはカーソルオブジェクトであり、 max を持つドキュメントではありません。次のように:finddocsseq

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