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::Documentuminclude 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') -
Errorist ein Schlüsselwort in Mongoid. Wenn Sie also ein Modell namensErrorhaben , 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.idangewiesen 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).
-