2016-12-15 8 views
0

私はmongoDB DBに接続しようとしており、コレクションに対していくつかのプロセスを作成し、すべてのコレクションアイテムが処理されたときにコレクションを閉じようとしています。 array.lengthを受け取ろうとしているとき、私は定義されていません。ノードjsでmongoDBコレクションのサイズを取得する方法は?

Db = require('mongodb').Db; 
Server = require('mongodb').Server; 
const db = new Db(DB_NAME, new Server(HOST, PORT)); 
// connect to mongoDB 
db.open(function (err, db) { 
    const Collection = db.collection(COLLECTION_NAME); 
    var items = Collection.find({}); 
    var itemsLength = items.lebgth; 
    var itemsProcessed = 0; 
    items.forEach((item, index, array) => { 
    // some process like: 
    Collection.update({query}, {set}, callback) 
    itemsProcessed++; 
    if(itemsProcessed == array.length){ 
     db.close(); 
     // close connection if all items were processed 
    } 
    }); 
}); 

他の方法はありますか?

+1

items.lebgth' 'のタイプミス。 – str

+0

itemsはカーソルですので、次のように実行する必要があります: 'var items = Collection.find({})。toArray();' –

答えて

1

EDIT:

hereを文書としてあなたは、forEachのオプションのコールバックを使用することができます。

items.forEach((item) => { 
    // some process... 
}, (err) => db.close()); // close connection if all items were processed 
+0

items.hasNext()は約束事のオブジェクト。どうすればこのようなことができますか:items.hasNext(has)=> {if(!has)db.close();}); – Ruchy

+0

あなたは正しいです。私は答えを更新しました – GilZ

+0

it – Ruchy

2

だけdb.collection.count()

0

チェックthisを使用!

Collection.stat() 
+0

両方の方法では機能しません:( – Ruchy

関連する問題