[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 },
{ _id: 'id2', planet: 'Earth', system: 'solar', inhabited: true },
{ _id: 'id3', planet: 'Jupiter', system: 'solar', inhabited: false },
{ _id: 'id4', planet: 'Omicron Persia 8', system: 'futurama', inhabited: true },
], function (err, newDoc) {
console.log('err', err);
console.log('newDoc', newDoc);
})
return db
}

ドキュメントを削除する

ドキュメントを数えるにはDatastore#removeを使います。  – query:クエリを設定したオブジェクトです。 – options:削除時のオプションです。multiフィールドがあり、trueを設定することで複数のドキュメントを削除することができます。デフォルトではfalseになっています。 – callback:検索処理のコールバック関数です。下記の引数を持ちます。 – err:エラー発生時の情報オブジェクトです。 – numRemoved:削除したドキュメントの数です。 queryは検索で使ったDatastore#findと仕様です。 optionsのmultiフィールドをtrueにしない限り複数ドキュメントを消すことができないので注意が必要です。
export function removeData() {
let db = new Datastore();
// ドキュメント全体から一つのドキュメントを削除します。
// optionsには空のオブジェクトを指定しているので、multiはデフォルトのfalseが設定されています。
db.remove({ _id: 'id2' }, {}, function (err, numRemoved) {
// ドキュメントを一つ削除したのでnumRemovedは1が設定されます。
console.log('err', err);
console.log('numRemoved', numRemoved);
});

// コレクションから複数のドキュメントを削除します。
db.remove({ system: 'solar' }, { multi: true }, function (err, numRemoved) {
// コレクションの中からplanetsがsolarのドキュメントを削除します。3つのドキュメントが削除されるのでnumRemovedは3になります。
console.log('err', err);
console.log('numRemoved', numRemoved);
});

// クエリを設定していないのでコレクション内に全てのドキュメントを削除します。
db.remove({}, { multi: true }, function (err, numRemoved) {
console.log('err', err);
console.log('numRemoved', numRemoved);
});
}