ザネリは列車を見送った

ブログという名の備忘録

ドキュメント指向データベース MongoDB を少しだけ触ってみる(1)

インストール

MongoDB サイトからプラットフォームに合ったものをダウンロード。
解凍して任意のディレクトリに配置。

MongoDB サーバの起動

{MongoDB インストールディレクトリ}/bin/mongod で起動する。
…が、以下のようなエラーが。

Sun Jan 08 22:23:56 [initandlisten] exception in initAndListen: 10296 dbpath (/data/db) does not exist, terminating

データディレクトリ(デフォルトではルート直下の/data/db)が無いと言われているので、
ディレクトリを作成するか起動時のオプションでデータディレクトリを指定する必要がある。
{インストールディレクトリ}/data/db を作成し、カレントディレクトリ {インストールディレクトリ}/bin/ から相対指定してみることにする。

mongod --dbpath=../data/db

無事起動成功。

シェルから操作

起動してログイン

{インストールディレクトリ}/bin/mongo でシェルを起動する。
以下のように表示されれば起動成功。デフォルトでは「test」DBに接続するようだ。

MongoDB shell version: 2.0.2
connecting to: test
>
DBの変更

「zaneli」DBに変更する。

> use zaneli
switched to db zaneli

現在のDBを確認する。

> db
zaneli

全てのDBを一覧表示する。

> show dbs
local   (empty)
zaneli  (empty)
データの登録・参照・削除

「coll1」コレクションにデータを登録。

> db.coll1.save({"name":"tarou","age":20})
> db.coll1.save({"name":"jirou","age":25})

「coll1」コレクション全件を取得する。

> db.coll1.find()
{ "_id" : ObjectId("4f099dfc477d5b936fee3946"), "name" : "tarou", "age" : 20 }
{ "_id" : ObjectId("4f099e02477d5b936fee3947"), "name" : "jirou", "age" : 25 }

「_id」フィールドは自動生成されるようだ。
_id を除くフィールドを取得するには、

> db.coll1.find({}, {_id:0})
{ "name" : "tarou", "age" : 20 }
{ "name" : "jirou", "age" : 25 }

_id のみを取得するには、

> db.coll1.find({}, {_id:1})
{ "_id" : ObjectId("4f099dfc477d5b936fee3946") }
{ "_id" : ObjectId("4f099e02477d5b936fee3947") }

特定のレコードのみ検索するには、

> db.coll1.find({"name":"tarou"})
{ "_id" : ObjectId("4f099dfc477d5b936fee3946"), "name" : "tarou", "age" : 20 }

とする。

現在のDBの全コレクション一覧の取得は

>  show collections
coll1
system.indexes

とする。

「coll1」コレクションの削除は、

> db.coll1.drop()

現在のDBの削除は、

> db.dropDatabase()

とする。