query: tag:MongoMapper

インストール

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 maiha on Sun 21 Feb 2010 at 15:29 with 0 comments