Beide sind großartige MongoDB-Bibliotheken für Ruby. Aber wenn Sie wechseln möchten, hier sind einige Hinweise:
Migration von MongoMapper ORM zu Mongoid ORM - Hinweise
-
Konfigurieren Sie die Datenbankverbindung.
-
YAML-Konfigurationsdatei ersetzen (einschließlich Replikatkonfiguration).
-
Konfigurieren Sie Mongoid-spezifische Optionen. zB -
raise_not_found_error: false
. wenn Sie nicht jedes Mal eine Fehlermeldung erhalten möchten, wenn eine Abfrage nichts zurückgibt... -
Alle Modelldefinitionen ändern -
include MongoMapper::Document
uminclude Mongoid::Document
-
Ändern Sie das Format für alle Felddefinitionen.
-
In Mongoid sollten Sie den Zeitstempel angeben:
include Mongoid::Timestamps
-
Validierung ändern. B.:
:in => ARRAY
, wird sein:validates :name, presence: true, inclusion: { in: ARRAY }
-
Indizes ändern.
-
Ändern Sie das order_by-Format. B.:MM:
Model.all(:order => 'name')
. Mongoid:Model.order_by('name ASC')
-
Error
ist ein Schlüsselwort in Mongoid. Wenn Sie also ein Modell namensError
haben , sollten Sie es ändern. -
Das Paginierungsformat ist anders und verwendet ein anderes Gem.
-
Der Primärschlüssel-Indexeintrag in MM ist
id
. In Mongoid ist es_id
, wenn Sie anderen Code haben, der auf.id
angewiesen ist im Objekt JSON können Sie as_jsonüberschreiben a> Funktion in Ihrem Modell, um die gewünschte JSON-Struktur zu erstellen. -
In MM
Model.fields(:id, :name)
, begrenzt die von der Datenbank zurückgegebenen Felder auf die an die Methode gelieferten. In Mongoid ist esModel.only(:name,:id)
-
Einige Abfrageänderungen:
-
Auswählen von Objekten nach Array:MM:
Model.where(:attr.in => [ ] )
undModel.where(:attr => [ ] )
. Mongoid ist nur:Model.where(:attr.in => [ ] )
-
Die Kartenoption von MM entspricht dem Zupfen der Mitte.
Model.map(&:name)
--to--Model.pluck(:name)
-
Mongoid unterstützt keine Suchabfrage für nil. B.:
value = nil. Model.find(value)
wird einen Fehler ausgeben:"Calling Document .find with nil is invalid"
. In Mongoid sollten wir also Folgendes tun:Model.find(value || "")
. -
In MM:
Model.find_or_initialize_by_name("BOB")
. In MongoidModel.find_or_initialize_by(name: "BOB")
. -
MM kann in diesen beiden Optionen verwendet werden:
Model.where({:name => 'BOB'}).first
, und auchModel.first({:name => 'BOB'})
. Mongoid hat nur die erste Option. -
In MM, um mehrere Objekte zu aktualisieren:
Model.set({conditions},attr_to_update)
. In Mongoid:Model.where(conditions).update_all(attr_to_update)
.
-