連載
» 2013年01月22日 18時10分 UPDATE

Node.jsを使ってみよう(2):Node.js、MongoDBでデータの保存 (1/4)

Node.jsとSocket.IO、MongoDBを使用して、Webページの更新内容がリアルタイムにView画面に反映されるサイトを作ってみた

[八木大介,マインドフリー]

MongoDBの紹介

 前回はNode.jsでWebアプリを作成するために、ExpressやSocket.IOを使用したデモを基に説明した。今回はWebアプリのデータを保存するために必要なデータベースとしてMongoDBの使い方を説明していく。今回の記事でも後半でMongoDBを使った簡単なデモを用意しているので試してみてほしい。

 MongoDBとは、ドキュメント指向のデータベースでNode.jsと相性がいいため、Node.jsとともに注目されている。Node.jsで実装したREABLOエンジンを使ったTech Releaseでも記事のデータベースとしてMongoDBを使用している。MongoDBもSocket.IOと同じく、手軽に使用することができるので、使い方を覚えておこう。

MongoDBの使い方

 以下のURLからまずはMongoDBをダウンロードしよう。

http://www.mongodb.org/downloads

 ダウンロードしてファイルを解凍したら、bin以下にパスを通しておくことをお勧めする。

 MongoDBのコマンドを試してみるだけの場合は、

http://www.mongodb.org/

 の「TRY IT OUT」の項目を選択すれば、ブラウザ上でMongoDBのコマンドを試すことが可能だ。

mongodの起動

 binフォルダの中の「mongod」がサーバの役割をする。

 MongoDBは指定したフォルダにファイルとしてデータベースデータを作成するので、MongoDBを起動する前にC:\data\db以下に空のフォルダを作成しよう。OSによってフォルダのパスが違うので注意しよう。

 生成した後にmongodのコマンドでMongoDBサーバが起動する。

$ mongod

 自分でデータベースの保存場所を指定したい場合は「--dbpath」を引数に入れて実行する。

$ mongod --dbpath C:\data\mongo

mongoシェル

 mongodでサーバを起動したら次はコンソールからMongoDBのデータを触ってみよう。「mongo」コマンドがそのコマンドだ。

$ mongo
MongoDB shell version: 2.0.4
connecting to: test
>

 mongoは対話型でMongoDBのコマンドを実行できる。

 試しにfooというデータベースを作成し、オブジェクトを生成してみよう。

>use foo
switched to db foo
>db.foo.save({text:"hello mongodb.",type:"message"})
>db.foo.save({text:"hoge",type:"message"})
>db.foo.find()
{ "_id" : ObjectId("50c598209cfdc77a5ec29734"), "text" : "hello mongodb." , type: "message"}
{ "_id" : ObjectId("50c59d6c9cfdc77a5ec29735"), "text" : "hoge", type: "message" }

 save()が、データの挿入になる。挿入する値は、JSONで記述する。save()でデータを保存すると自動的に_idという識別用のパラメータが付く。要素に_idがあるオブジェクトをsave()した場合は、データが更新される。find()が値を取得する関数で、引数なしで呼び出した場合は要素すべてが取得できる。

JavaScriptの実行

 mongoシェルはJavaScriptインタプリタであるため、JavaScriptの構文を使用できる。for文やwhile文、クロージャ、関数定義などが使えるので、複雑な処理などはJavaScriptを使用して実装することができる。先ほど使用した、find()やsave()もJavaScriptの関数になる。

 以下の例ではxの値が0から9までのデータをfor文でfooに挿入し、find()文で、2で割り切れる値のみをフィルタリングして取得している。

> for(var i=0;i<10;i++){ db.foo.save({x:i}); }
> db.foo.find({$where:function(){return this.x %2 == 0;}})
{ "_id" : ObjectId("50c800ad30d36c061f9e07b7"), "x" : 0 }
{ "_id" : ObjectId("50c800ad30d36c061f9e07b9"), "x" : 2 }
{ "_id" : ObjectId("50c800ad30d36c061f9e07bb"), "x" : 4 }
{ "_id" : ObjectId("50c800ad30d36c061f9e07bd"), "x" : 6 }
{ "_id" : ObjectId("50c800ad30d36c061f9e07bf"), "x" : 8 }

 詳しいリファレンスは公式の

http://docs.mongodb.org/manual/reference/javascript/

 に載っているので、一通り見ておくのがいいだろう。今回は紹介しなかった、findOne()やupdate()、remove()などの必要な関数も説明されている。

       1|2|3|4 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。