February 4, 2010

MongoDB 体験記

環境: Mac OSX 10.5.8

インストール 〜 起動

wget で tgz を取ってきて解凍して DB 用の適当なディレクトリ作って bin/mongod コマンドを叩けばすぐに起動できる。

wget http://downloads.mongodb.org/osx/mongodb-osx-i386-1.2.2.tgz
tar xvzf mongodb-osx-i386-1.2.2.tgz
cd mongodb-osx-i386-1.2.2
mkdir ~/tmp/db
bin/mongod --dbpath ~/tmp/db

Ruby から使う

ライブラリのインストール

gem install mongo_ext

簡単な使い方

“foo” というデータベースの “test” というコレクション(テーブルみたいなもの?)に {’a’ => 10} というような Hash オブジェクトを突っ込む。

# mongodb example
require 'rubygems'
require 'mongo'

db = Mongo::Connection.new.db('foo')
coll = db.collection('test')

coll.remove

coll.insert({'a' => 10})
coll.insert({'b' => 20})
coll.insert({'c' => 30})

coll.find().each { |doc| puts doc.inspect }

たぶん、デフォルトで localhost の MongoDB に接続しにいってるんだろうな。

GridFS

GridFS (MongoDB で動作するファイルシステムみたいなもの?)を使ってみる。

“test.txt” というファイルに “Hello, world!” という文字列を書き込んだあとにファイルの内容を読み込んで画面に出力する。

# mongodb GridFS example
require 'rubygems'
require 'mongo'
require 'mongo/gridfs'

include GridFS

db = Mongo::Connection.new.db('grid')

GridStore.open(db, 'test.txt', 'w') do |f|
  f.puts "Hello, world!"
end

GridStore.open(db, 'test.txt', 'r') do |f|
  puts f.read
end

画像とかも保存できるんかな。

次回

次はアクセス制御とかのところを調べたい。