MongoDB

NoSQLデータベース。なんか流行ってるらしい

RubyバインディングはMongoidがいいらしい
http://blog.madoro.org/mn/86

MongoLab

ホスティングサービス。240MBまで無料
https://mongolab.com/about/products/#/pricing

herokuと簡単に連携でき、どちらもAmazon EC2だからレイテンシが少ないらしい
http://addons.heroku.com/mongolab
http://devcenter.heroku.com/articles/mongolab

容量超過すると、自動的に従量課金されるらしい
https://mongolab.com/about/products/#/faqs

Q. What happens if I exceed my for-pay database's storage limit?
When your database goes over its limit, we'll charge a reasonable overage fee (metered daily and measured by the byte)

GUI

Windowsなら、MongoVUEが素直でよさげ
http://www.mongodb.org/display/DOCS/Admin+UIs#AdminUIs-MongoVUE

Mongoid

レコードがあったら取得する。なかったら初期値を指定して作成

検索条件はidに限らない。
※find_or_create_by()の方がatomicっぽいけど、2回アクセスが発生しそう。どっちがいいんだろ
record = Model.find_or_initialize_by(id: 1234)
if record.new?
  # ... 初期値設定

  record.save!
end

整数のサイズ

Mongoidなら、32bit超えの値もRuby同様気にしなくていいらしい。
自動でNumberLongになっている。

Railsで使用時、ActiveRecord::ConnectionNotEstablished が出る

http://stackoverflow.com/questions/9444265/mongodb-mongoid-rails-3-1-error-with-active-record

MongoMapperで、undefined method `collection' for nil:NilClass

トレースはこんな感じ
mongo_mapper (0.11.1) lib/mongo_mapper/plugins/persistence.rb:49:in `collection'
mongo_mapper (0.11.1) lib/mongo_mapper/plugins/querying.rb:67:in `query'
mongo_mapper (0.11.1) lib/mongo_mapper/plugins/sci.rb:24:in `query'

データベースに接続できていないとこうなるらしい。
database.mongo.yml で <<: という表記が使われているが、これは環境によっては動かない(?)らしい。
これを使わず直接すべての項目を書けば通る。

MongoMapperのcreate!の罠

Mongoid::Documentではcreate!にブロックが渡せるが、MongoMapper::Documentでは渡せないらしい。f*ck
mongo_mapper-0.11.1 で確認。

saveでUPDATEが走らないことがある

メンバに代入しても、値が変わってなかったらsaveがスキップされる
http://two.mongoid.org/docs/documents/dirty.html