[NeDBを使い方]データベースのドキュメントをカウントしよう。
NeDBはJavaScriptで作られたデータベースです。 Node.js、nw.js、エレクトロン、ブラウザ等で動かすことができます。 Github NeDBはドキュメント型データベースでJSONをそのまま保存できます。 そのため、JavaScriptのプログラムと親和性が高く、データの取得、利用が簡単にできます。 また、NeDBはMongoDBと互換性があり、一つのデータベースはMongoDBのコレクションと対応しています。 対応は下記の通りです。
- データベース→コレクション
- データロウ→ドキュメント
テスト用のデータベース
本記事で使うカウント対象のデータベースとドキュメントをインサートして準備します。 記事内で検索条件指定で得られたドキュメントを説明のために、_idフィールドの値を使います。 例:〇〇という検索条件ため、結果はid1,id2,id3のドキュメントの配列になります。export function getTestDatabase() { let db = new Datastore(); db.insert([ { _id: 'id1', planet: 'Mars', system: 'solar', inhabited: false, satellites: ['Phobos', 'Deimos'] }, { _id: 'id2', planet: 'Earth', system: 'solar', inhabited: true, humans: { genders: 2, eyes: true } }, { _id: 'id3', planet: 'Jupiter', system: 'solar', inhabited: false }, { _id: 'id4', planet: 'Omicron Persei 8', system: 'futurama', inhabited: true, humans: { genders: 7 } }, { _id: 'id5', completeData: { planets: [ { name: 'Earth', number: 3 }, { name: 'Mars', number: 2 }, { name: 'Pluton', number: 9 } ] } }, { _id: 'id6', completeData: { planets: { name: 'Mars', number: 2} } }, ], function (err, newDoc) { console.log('err', err); console.log('newDoc', newDoc); }) return db }
ドキュメントを数える
ドキュメントを数えるにはDatastore#countを使います。- query:クエリを設定したオブジェクトです。
- callback:検索処理のコールバック関数です。下記の引数を持ちます。
- err:エラー発生時の情報オブジェクトです。
- count:検索結果のドキュメントの数です。
export function countData(){ let db = new Datastore(); // countを使用して条件に合うドキュメントを数えます。 db.count({ system: 'solar' }, function (err, count) { // コレクション内のドキュメントでsystemが'solar'のドキュメントを数えます。 console.log('err', err); console.log('doc', count); }); // countを使用して全てのドキュメントを数えます。 db.count({}, function (err, count) { // コレクション内のドキュメントを数えます。 console.log('err', err); console.log('doc', count); }); }