ドキュメント指向データベース 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()
とする。