MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Porady dotyczące migracji z MongoMapper do Mongoid?

Obie są świetnymi bibliotekami MongoDB dla Rubiego. Ale jeśli chcesz się przełączyć, oto kilka uwag:

Migracja MongoMapper ORM do Mongoid ORM — uwagi

  • Skonfiguruj połączenie z bazą danych.

  • Zastąp plik konfiguracyjny yaml (zawiera konfigurację repliki).

  • Skonfiguruj opcje specyficzne dla Mongoid. np. - raise_not_found_error: false . jeśli nie chcesz, aby błąd pojawiał się za każdym razem, gdy zapytanie nic nie zwraca...

  • Zmień wszystkie definicje modeli - include MongoMapper::Document aby include Mongoid::Document

  • Zmień format definicji wszystkich pól.

  • W mongoid należy podać znacznik czasu:include Mongoid::Timestamps

  • Walidacja zmian. np.::in => ARRAY , będzie:validates :name, presence: true, inclusion: { in: ARRAY }

  • Zmień indeksy.

  • Zmień kolejność_według formatu. np:MM:Model.all(:order => 'name') . Mongoid:Model.order_by('name ASC')

  • Error to słowo kluczowe w języku Mongoid. Więc jeśli masz model o nazwie Error , powinieneś to zmienić.

  • Format paginacji jest inny, używa innego klejnotu.

  • Wpis indeksu klucza podstawowego w MM to id . W Mongoidzie jest to _id , jeśli masz inny kod oparty na .id w obiekcie JSON możesz nadpisać as_json funkcji w modelu, aby utworzyć żądaną strukturę JSON.

  • W MM, Model.fields(:id, :name) , ogranicza pola zwracane z bazy danych do tych dostarczonych do metody. W Mongoidzie jest to Model.only(:name,:id)

  • Niektóre zmiany w zapytaniach:

    1. Wybór obiektów według tablicy:MM:Model.where(:attr.in => [ ] ) i Model.where(:attr => [ ] ) . Mongoid to tylko:Model.where(:attr.in => [ ] )

    2. Opcja mapy MM jest odpowiednikiem szarpnięcia środkowego. Model.map(&:name) --to-- Model.pluck(:name)

    3. Mongoid nie obsługuje kwerendy wyszukiwania dla wartości zero. np.:value = nil. Model.find(value) zgłosi błąd:"Calling Document .find with nil is invalid" . Więc w mongoid powinniśmy zrobić:Model.find(value || "") .

    4. W MM:Model.find_or_initialize_by_name("BOB") . W Mongoid Model.find_or_initialize_by(name: "BOB") .

    5. MM może być użyty w tych dwóch opcjach:Model.where({:name => 'BOB'}).first , a także Model.first({:name => 'BOB'}) . Mongoid ma tylko pierwszą opcję.

    6. W MM, aby zaktualizować wiele obiektów:Model.set({conditions},attr_to_update) . W Mongoid:Model.where(conditions).update_all(attr_to_update) .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jakiś sposób na uzyskanie zmodyfikowanego IDS z operacji zbiorczych mongodb przy użyciu mongoose?

  2. Jak w MongoDB mapreduce spłaszczyć obiekt wartości?

  3. MongoDB zagnieżdżony limit głębi pola obiektu

  4. Node + Mongodb + ISODate + problem ze strefą czasową

  5. Odczyt z Kinesis daje puste rekordy po uruchomieniu przy użyciu poprzedniego numeru sekwencji lub znacznika czasu