MongoDBでゆるふわDB体験

第1回 使ってみようMongoDB

この記事を読むのに必要な時間:およそ 4 分

MongoDBのインストール

MongoDBのインストールは非常に簡単です。以下の4つのステップで起動できます。

  1. MongoDBのバイナリダウンロード
  2. ダウンロードしたファイルの展開
  3. データディレクトリの作成
  4. MongoDBの起動

MongoDBのバイナリダウンロード

まずMongoDBをダウンロードします。MongoDBダウンロードページからそれぞれのプラットフォームに合ったものをダウンロードしてください。

注意:MongoDB2.2はWindows XPでは動作しません。Windows XPの場合は,MongoDB2.0系を使ってください。

本記事ではversion 2.2.1を使用します。

ダウンロードしたファイルの展開

ダウンロードしたファイルはzipやtar.gz等に圧縮されているので,好きなディレクトリに展開します。

展開したMongoDBのディレクトリは以下のようになっています。

(展開したディレクトリ)
    |--bin
    |    |--mongod.exe  : MongoDBの本体です。
    |    |--mongo.exe   : MongoDBのクライアントです。
    |    ..
    |--GNU-AGPL-3.0
    |--README
    ..

 Windowsの場合です。Linux(Mac)の場合は.exeの拡張子はありません。

データディレクトリ作成

データの格納に使うディレクトリを作成します。コマンドプロンプト(Linuxならターミナル)を起動し,以下の通りディレクトリ作成してください。

Windowsの場合

mkdir C:\data\db

Linux(Mac)の場合

mkdir -p /data/db

MongoDBの起動

展開したMongoDBのディレクトリにあるMongoDBの本体「mongod.exe」を実行してください。MongoDBクライアント「mongo.exe」と名前が似ているため注意が必要です。

Windowsの場合

cd (展開したディレクトリ)
bin\mongod.exe

Linux(Mac)の場合

cd (展開したディレクトリ)
./bin/mongod

起動したコンソールの最後に「waiting for connections on port 27017」と出力されれば起動成功です。

MongoDBに触ってみる

MongoDBクライアントでMongoDBのコンソールに接続する

新しくコマンドプロンプト(Linuxならターミナル)を起動し,展開したMongoDBのディレクトリにあるMongoDBクライアント「mongo.exe」を起動してください。

Windowsの場合

cd (展開したディレクトリ)
bin\mongo.exe

Linux(Mac)の場合

cd (展開したディレクトリ)
./bin/mongo

以下のように入力待ちの状態になれば接続できています。

MongoDB shell version: 2.2.1
connecting to: test
>         ←入力待ち

MongoDBのデータ構造

データを挿入する前に,MongoDBのデータ構造について解説します。MongoDBは以下のようなデータ構造を取ります。

--MongoDB
  +--データベース
  |  +--コレクション
  |  |  +--ドキュメント
  |  |  +--ドキュメント
  |  |
  |  +--コレクション
  |  |  +--ドキュメント
  | 
  +--データベース
  |  +--コレクション

ですので,まずデータベースを作成し,次にコレクションを作成します。そのコレクションに対して,ドキュメントのCRUD操作(作成,参照,更新,削除)を行っていきます。

データベースの作成

MongoDBのコンソールに接続した状態で,useコマンドを使いデータベースを作成します。今回は「testdb」という名前のデータベースを作ります。

> use testdb
switched to db testdb

[参考]useコマンドはデータベースの指定にも使いますが,MongoDBでは存在しないデータベースを指定すると,データベースを新たに作成します。

ドキュメントの挿入

コレクションを指定して,insertコマンドでドキュメントを挿入します。今回は「testcoll」という名前のコレクションを作り,その中にデータを入れます。

> db.testcoll.insert( { "key1" : "string", "key2" : 123 } )

何のエラーも表示されなければ成功しています。

普通のリレーショナルデータベースに対する挿入とはかなり異なると思うので,詳しく解説してきます。

まず,⁠db.testcoll.insert()」の部分ですが,⁠db」は指定したデータベースを表し,⁠db.testcoll」でコレクションを指定しています。そして,このコレクションのメソッドである「insert()」を呼び出しています。

次に,挿入するドキュメント「{ "key1" : "string", "key2" : 123 }」の部分ですが,これはJSON形式のハッシュデータです。JSONの説明は省略しますが,このようにMongoDBに対する操作は,すべてJSON形式のデータで扱います。

もう1つドキュメントを投入してみましょう。次に投入するデータはハッシュだけではなく,ハッシュと配列の混ざったドキュメントを入れてみます。

> db.testcoll.insert( { "array" : [ "sun", "mon" , "tue" ] } )

MongoDBはスキーマレスですので,このようにいろいろなデータをドキュメントとして格納できます。

ドキュメントの参照

ドキュメントの参照はコレクションのfind()メソッドを使います。以下のコマンドを実行してください。

> db.testcoll.find()
{ "_id" : ObjectId("509f41b38626d09726e978ed"), "key1" : "string", "key2" : 123 }
{ "_id" : ObjectId("509f41ba8626d09726e978ee"), "array" : [ "sun", "mon", "tue" ] }

このように先ほど挿入したドキュメントが表示されます。また,キー"_id"の値には,自動的に一意な文字列が採番されます。

findOne()のメソッドで,最初の1つのドキュメントを取得できます。

> db.testcoll.findOne()
{
        "_id" : ObjectId("509f41b38626d09726e978ed"),
        "key1" : "string",
        "key2" : 123
}

ドキュメントに対して,ハッシュキーを引数に渡すことにより,値を取り出すことができます。

> db.testcoll.findOne()["key1"]
string

この文法はJavaScriptと同じです。実はMongoDBはJavaScriptの実行環境を備えているため,JavaScriptと同じ文法を利用可能です。

今回はここまでとします。

著者プロフィール

藤崎祥見(ふじさきしょうけん)

野村総合研究所 OpenStandia所属。オープンソースのR&Dとセミナー講師を担当。

Debian,Ubuntu,Liferayのコミュニティで活動した後,MongoDBの翻訳に関わり,丸の内MongoDB勉強会を始める。

実家がお寺で,住職の資格を所持する坊主系エンジニア。

Twitter:@syokenz


渡部徹太郎(わたなべてつたろう)

野村総合研究所 OpenStandia所属。オープンソースを使ったSIやサポートの業務に従事。

藤崎と共同で丸の内MongoDB勉強会を始める。

趣味は自宅サーバ。好きなものはLinuxとRuby。

Twitter:@fetarodc

コメント

コメントの記入