インストール
shell>>
% gem install mongo_mapper
<<--
mongomapper (古いバージョンのgem)も存在するので注意
セットアップ
ruby>>
require 'mongo_mapper'
MongoMapper.database = "app1" # DB名
<<--
- 各モデル内で明示されない場合に利用されるデフォルトのDB名
モデル
ruby>>
class Player
include MongoMapper::Document
key :name, String, :required => true
key :policy, Integer
key :renkei, String
key :note, String
timestamps!
validates_uniqueness_of :name
end
<<--
- pkeyのidが勝手に定義される
- 文字列は長さに制限がないので全てString
検索
ruby>>
Player.count
=> 822
Player.count(:renkei=>'萩原型')
=> 135
Player.first
=> #<Player label: "萩原 忠志" ... >
Player.all(:label=>/^河本/).map{|p| [p.pos, p.label]}
=> [["FW", "河本 鬼茂"], ["GK", "河本 龍将"]]
<<--
高度な設定
- ARで言うテーブルをMongoDBではコレクションと呼ぶ
- table を collection に変えるだけでAR風のAPIが使える
ruby>>
class Pref
include MongoMapper::Document
set_database_name "usei" # app1でなく usei DBを利用
set_collection_name "zip" # prefs でなく zip コレクションを利用
...
<<--
長所
- MongoDB自体の性能がよい
- インタフェースが AR と DM のよい点を取り込み (CRUDはAR, SearchはDM)
- バリデーションや関連もサポート
- 正規表現による検索
短所
- サーバ(MongoDB)への再接続などのコネクション機能が弱い(mongo_mapper でなく mongo の問題かも)
posted by
maiha on Sun 21 Feb 2010 at 15:29 with 0 comments