[NeDBを使い方]データベースのドキュメントをカウントしよう。

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

NeDBはJavaScriptで作られたデータベースです。 Node.js、nw.js、エレクトロン、ブラウザ等で動かすことができます。 Github NeDBはドキュメント型データベースでJSONをそのまま保存できます。 そのため、JavaScriptのプログラムと親和性が高く、データの取得、利用が簡単にできます。 また、NeDBはMongoDBと互換性があり、一つのデータベースはMongoDBのコレクションと対応しています。 対応は下記の通りです。
  • データベース→コレクション
  • データロウ→ドキュメント
今回は、NeDBデータベースにデータをカウントする方法について書いていきます。

テスト用のデータベース

本記事で使うカウント対象のデータベースとドキュメントをインサートして準備します。 記事内で検索条件指定で得られたドキュメントを説明のために、_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:検索結果のドキュメントの数です。
queryは検索で使ったDatastore#findと仕様です。
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);
});
}