どちらもRuby用の優れたMongoDBライブラリです。ただし、切り替えたい場合は、次の点に注意してください。
MongoMapperORMからMongoidORMへの移行-メモ
-
データベース接続を構成します。
-
構成yamlファイル(レプリカ構成を含む)を置き換えます。
-
Mongoid固有のオプションを構成します。例-
raise_not_found_error: false
。クエリが何も返さないたびにエラーが発生したくない場合は... -
すべてのモデル定義を変更します-
include MongoMapper::Document
include Mongoid::Document
-
すべてのフィールド定義の形式を変更します。
-
mongoidでは、タイムスタンプを指定する必要があります:
include Mongoid::Timestamps
-
検証を変更します。例:
:in => ARRAY
、次のようになります:validates :name, presence: true, inclusion: { in: ARRAY }
-
インデックスを変更します。
-
order_by形式を変更します。例:MM:
Model.all(:order => 'name')
。 Mongoid:Model.order_by('name ASC')
-
Error
Mongoidのキーワードです。したがって、Error
という名前のモデルがある場合 、変更する必要があります。 -
別の宝石を使用して、ページネーションの形式が異なります。
-
MMの主キーインデックスエントリは
id
です。 。 Mongoidでは_id
、.id
に依存する他のコードがある場合 オブジェクトJSONでは、 as_json モデルで関数を使用して、必要なJSON構造を作成します。 -
MMでは、
Model.fields(:id, :name)
、データベースから返されるフィールドをメソッドに提供されるフィールドに制限します。 Mongoidでは、Model.only(:name,:id)
-
一部のクエリの変更:
-
配列によるオブジェクトの選択:MM:
Model.where(:attr.in => [ ] )
およびModel.where(:attr => [ ] )
。 Mongoidは次のとおりです:Model.where(:attr.in => [ ] )
-
MMのマップオプションは、ミッドのプルックに相当します。
Model.map(&:name)
--to--Model.pluck(:name)
-
Mongoidは、nilの検索クエリをサポートしていません。例:
value = nil. Model.find(value)
エラーがスローされます:"Calling Document .find with nil is invalid"
。したがって、mongoidでは次のようにする必要があります:Model.find(value || "")
。 -
MMの場合:
Model.find_or_initialize_by_name("BOB")
。 MongoidのModel.find_or_initialize_by(name: "BOB")
。 -
MMは、次の2つのオプションで使用できます:
Model.where({:name => 'BOB'}).first
、およびModel.first({:name => 'BOB'})
。 Mongoidには最初のオプションしかありません。 -
MMで、複数のオブジェクトを更新するには:
Model.set({conditions},attr_to_update)
。 Mongoidの場合:Model.where(conditions).update_all(attr_to_update)
。
-