node.jsのいろいろなモジュール40 – mongoDBライクな軽量データベース:EJDB

node.jsのいろいろなモジュール40 – mongoDBライクな軽量データベース:EJDB

Clock Icon2013.07.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

mongoライクな軽量データベースモジュール

ejdbはmongodbのように、json形式でデータを扱える軽量データベースです。
sqliteのようにファイルにデータを保存します。
また、ejdbはnode以外にもC/C++/Java/.Net/python等、いろいろな言語で動作します。
nodeの場合、npmでインストールも簡単なので試してみましょう。

環境構築方法

今回使用した動作環境は以下のとおりです。

  • OS : MacOS X 10.7.5
  • Node.js : v0.10.8
  • npm : 1.2.23

npmを使用してモジュールをインストールしましょう。

% npm install ejdb

ejdbをつかってみる

ejdbのGithubには、下記のようにそのまま動くサンプルもあります。

var EJDB = require("ejdb");
var jb = EJDB.open("zoo", EJDB.DEFAULT_OPEN_MODE | EJDB.JBOTRUNC);

var parrot1 = {
    "name" : "Grenny",
    "type" : "African Grey",
    "male" : true,
    "age" : 1,
    "birthdate" : new Date(),
    "likes" : ["green color", "night", "toys"],
    "extra1" : null
};
var parrot2 = {
    "name" : "Bounty",
    "type" : "Cockatoo",
    "male" : false,
    "age" : 15,
    "birthdate" : new Date(),
    "likes" : ["sugar cane"]
};

jb.save("parrots", [parrot1, parrot2], function(err, oids) {
    if (err) {
        console.error(err);
        return;
    }
    console.log("Grenny OID: " + parrot1["_id"]);
    console.log("Bounty OID: " + parrot2["_id"]);

    jb.find("parrots",
            {"likes" : "toys"},
            {"$orderby" : {"name" : 1}},
            function(err, cursor, count) {
                if (err) {
                    console.error(err);
                    return;
                }
                console.log("Found " + count + " parrots");
                while (cursor.next()) {
                    console.log(cursor.field("name") + " likes toys!");
                }
                cursor.close(); //It's not mandatory to close cursor explicitly
                jb.close(); //Close database
            });
});

サンプルでは、zooという名前でDBをopenした後、オブジェクトの登録と検索を行なっています。
登録や検索の方法も、シンプルで理解しやすいですね。

まとめ

とても簡単にプログラムに組み込んで使えました。
手軽にnodeアプリに組み込めるので便利ですね。

参考サイトなど

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.