[技術書つまみ食い] 『MongoDB イン・アクション』第二回

[技術書つまみ食い] 『MongoDB イン・アクション』第一回 の続きです。

2章 JavaScript シェルから使う MongoDB

環境

こっからハンズオンでガリガリやっていくわけですが、わしの環境を紹介しておきます。
OS: MacOS X 10.8.2
MongoDB: v2.2.2
こんだけ。MongoDBv2.2.2 を落としてきて、解凍して起動しただけです。

cd mongodb-osx-x86_64-2.2.2/bin
./mongod --dbpath=/Users/yancya/data/db/

CRUD 操作

いわゆる CRUD 操作をガリガリやっていきます。
シェルの起動は簡単

./mongo

だけ!
次にデータベースへの接続。tutorial という名前のデータベースへ接続します。
そんなデータベース作った覚えがない?問題ない!無くても繋がるw 実体は最初に insert するときに勝手に作られる。

> use tutorial

[Create]

> db.users.insert({username: "yancya"})

[Read] 挿入したレコードに _id という名前でハッシュが付与されているのが分かります。これがプライマリキーです。

> db.users.find()
> db.users.find({username: "yancya"})
> #=> { "_id" : ObjectId("50e5a5cf87d9241065406c71"), "username" : "yancya" }

[Update] 条件と更新内容を喰わせます。単なる set 意外にも unset とかイロイロあります。

> db.users.update({username: "yancya"}, {$set: {city: "adachi-ku"}})

[Delete] 条件がなければ全件消去します。

> db.users.remove({username: "yancya"})

[Create or Update] _id が無ければ insert、あれば update します。

> db.users.save({username: "yancya"})

インデックス

インデックスは昇順(1)降順(ー1)で指定できる。ネストの奥にも指定できたりする。

> db.users.ensureIndex({username: 1})
> db.users.ensureIndex({address.town: -1})

おまけ

insert, find, update, remove, save らは function なので、() を抜いて実行してみると実装が画面に表示されてきて楽しいよ。javascript のソースがそのまんま出てくる。

とりあえずまとめ

わりと簡単に使えて楽しいね!

> db.users.count({"address.town":"aoi"})

とかもある。
適切にインデックスつけていけば、集計とかもガリガリできそうだし、大変興味深いですね。
次回、3章は MongoDB を使ったプログラムの作成です。Ruby のドライバで接続してイロイロやりましょう。20ページくらいだけど、今回カツカツだったので、2回に分けたりするかも。
以上!

カテゴリー: 技術書つまみ食い パーマリンク

[技術書つまみ食い] 『MongoDB イン・アクション』第二回 への1件のコメント

  1. ピンバック: [技術書つまみ食い] 『MongoDB イン・アクション』第三回 | UPEC Blog

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください