sql >> データベース >  >> NoSQL >> MongoDB

MongoMapperからMongoidへの移行に関するアドバイスはありますか?

    どちらも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)

    • 一部のクエリの変更:

      1. 配列によるオブジェクトの選択:MM:Model.where(:attr.in => [ ] ) およびModel.where(:attr => [ ] ) 。 Mongoidは次のとおりです:Model.where(:attr.in => [ ] )

      2. MMのマップオプションは、ミッドのプルックに相当します。 Model.map(&:name) --to-- Model.pluck(:name)

      3. Mongoidは、nilの検索クエリをサポートしていません。例:value = nil. Model.find(value) エラーがスローされます:"Calling Document .find with nil is invalid" 。したがって、mongoidでは次のようにする必要があります:Model.find(value || "")

      4. MMの場合:Model.find_or_initialize_by_name("BOB") 。 MongoidのModel.find_or_initialize_by(name: "BOB")

      5. MMは、次の2つのオプションで使用できます:Model.where({:name => 'BOB'}).first 、およびModel.first({:name => 'BOB'}) 。 Mongoidには最初のオプションしかありません。

      6. MMで、複数のオブジェクトを更新するには:Model.set({conditions},attr_to_update) 。 Mongoidの場合:Model.where(conditions).update_all(attr_to_update)




    1. MongoDBとMongooseは、別のデータベースに対して認証しながら1つのデータベースにアクセスします(NodeJS、Mongoose)

    2. docker-compose + django +redis-127.0.0.1:6379に接続しているエラー111。接続拒否

    3. MongoDBで制約を適用する方法は?

    4. mongodbに住む時間、マングースは機能しません。ドキュメントが削除されない