2012-02-16 10 views
10

Node.jsを介してMongoDBとのインターフェイスを試行していますが、count()メソッドに問題があります。私はnode-mongodb-nativeを使用しており、私がやっていることはうまくいくはずです。私のコードサンプル:MongoDB count collection Node.js

var get_total_num_docs = function(db_client, query, cb){ 
    db_client.collection(query['collection'], function(e, coll) { 
    coll.find(query.params, query.options, function (e, cursor) { 
     cursor.count(function (e, count) { 
     console.log(count); 
     return cb(e, count); 
     }); 
    }); 
    }); 
}; 

私はすべてが(別名高専とカーソルの両方に定義されている)が存在するが、私のquery.paramsフィールドは(すなわち、コレクション全体の数を見つけること)空の場合にのみ動作することを確信しています。だから私は任意の種類のセレクタでfindを実行しようとしている場合、findは動作しますが、返されたカーソルをカウントすることを拒否します。私がオンラインで読んだことは、これを行う正しい方法のように見えますが、明らかに何かが間違っています。すべての助けをありがとう!カーソルを必要としない場合は

+0

あなたはそれをカウントすることを拒否言うときあなたは何を意味するのですか?あなたに間違ったカウントを与えたり、エラーを投げたりしていますか? –

+0

文字通り、決して終了しないので、countに渡されたコールバックは決して呼び出されません。私は約10分間それを実行し、それは決して終わらない。 coll.findコールは非常に短い時間がかかりますが、何かがカウントと連動していません。 – MrJaeger

+0

受け取った各エラーオブジェクトを '' console.log''しようとしましたか? クエリパラメータと使用されるオプションは何ですか? –

答えて

18

、あなたはこのようにあなたのコードを書く必要があります。

var get_total_num_docs = function(db_client, query, cb){ 
    db_client.collection(query['collection'], function(e, coll) { 
    coll.find(query.params, query.options).count(function (e, count) { 
     console.log(count); 
     return cb(e, count); 
    }); 
    }); 
}; 
関連する問題