[技術書つまみ食い] 『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 イン・アクション』第三回 | UPEC Blog