Mongo with Node.js
今日やった事
Mongo with Node.js
研究のコードを書いていました。
Node.jsからMongoを触るにはmongodb
というパッケージを入れればよくて(そのまま)こんな感じで使える。
const MongoClient = require('mongodb').MongoClient; const _ = require('lodash'); const url = process.env.MONGO_URL || 'mongodb://localhost:27017'; const dbName = process.env.MONGO_DB_NAME || 'fluentd'; // Create a new MongoClient const client = new MongoClient(url, {useNewUrlParser: true}); client.connect() .then(async client => { const db = client.db(dbName); const query = { status: { $regex: /^[123]/ }, // StatusCodeが1xx/2xx/3xxのログを抽出 request: { $regex: /^GET/ } // GETリクエストを集計対象にする }; const logsGropudByRemoteAddr = {}; await db.collection('web').find(query).forEach(record => { if (logsGropudByRemoteAddr[record.remote]) { logsGropudByRemoteAddr[record.remote].push(record); } else { logsGropudByRemoteAddr[record.remote] = [record]; } }); client.close(); return Object.values(logsGropudByRemoteAddr); }) .then(logs => console.log(logs)) .catch(err => console.log(err));
ちょっとどうでもいい部分が多いが、こんな感じ。
queryという変数には、検索条件が入っている。MongoはNoSQLなのでこんな感じで検索条件を指定していくらしい。
他にも$
から始まるオペレータがいろいろとあるので、ドキュメントをみながら探すのがよさそう。(もしくはnot mongo
とか、SQLの用語と組み合わせてググるといい感じにヒットする)
明日の予定 / やること
- SA
- 研究
雑談
研究に一筋の光が見えたか?
という感じ。とりあえずちゃんとアルゴリズム考えて実装してみないことには始まらなさそうだなと思った。