MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Съвет за мигриране от MongoMapper към Mongoid?

И двете са страхотни MongoDB библиотеки за Ruby. Но ако искате да превключите, ето някои бележки:

Миграция на MongoMapper ORM към Mongoid ORM – Бележки

  • Конфигурирайте връзката с базата данни.

  • Заменете конфигурационния 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 е еквивалентна на изтръгването на Mid. Model.map(&:name) --to-- Model.pluck(:name)

    3. Mongoid не поддържа заявка за намиране за нула. напр.: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 може да се използва в тези две опции: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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Angular Google Maps/NodeJS:Показване на маркери от база данни

  2. Как да инсталирате MongoDB на Windows система?

  3. Изберете записи, съответстващи на конкатна стойност на две полета в mongodb

  4. MongoDB - Актуализиране само на $ref от DBRef тип поле

  5. мангуст модел, масив от низове, масив от структура на обекти