mongoDB の stream example
mongoDB の stream を使おうとしてサンプルコードを探すと意外と見つからないのでメモ
var MongoClient = require('mongodb').MongoClient; function getIds (db, callback) { var condition = {}; // something var stream = db.collection('userActionLog').find(condition, {userId:1}).stream(); stream.on('error', function (err) { db.close(); return callback(err); }); var seen = {}, var ids = []; stream.on('data', function (doc) { if (!seen[doc.userId]) { seen[doc.userId] = true; ids.push(doc.userId); } }); stream.on('close', function () { db.close(); return callback(null, ids); }); } // Connection URL var url = 'mongodb://localhost:27017/sample'; MongoClient.connect(url, function(err, db) { console.log("Connected correctly to server"); getIds(db, start, end, function(err, userIds) { console.log(err, userIds); }); });
ids.push しているのは userId が数値型を想定。文字列だったら以下で導きす事も可能だとおもいますがpush するとの keys を取り出すのはどっちが効率いいのか調べてないです。
// return callback(null, ids); callback(null, Object.keys(seen));