2012-11-11 9 views
5

Gibt es eine eingebaute Möglichkeit, um Upsert (einfügen, wenn nicht existiert) in Mongoid? Oder sollte ich zuerst prüfen, ob ein Artikel existiert und erst danach einfügen/aktualisieren?Upsert in Mongoid

Antwort

2

Es wird ein eingebautes in Upsert Verfahren in Mongoid bereits

Model # Upsert Führt eine MongoDB Upsert auf dem Dokument. Wenn das Dokument in der Datenbank vorhanden ist, wird es mit den aktuellen Attributen des Dokuments im Speicher überschrieben. Wenn das Dokument nicht in der Datenbank vorhanden ist, wird es eingefügt. Beachten Sie, dass dies nur die {vor | nach | um}} Rückrufe ausführt.

von http://mongoid.org/en/mongoid/docs/persistence.html Genommen

+0

Wie es für has_many zu tun. Angenommen, der Benutzer hat viele Bücher, möchte ich, dass die Bücher des Benutzers aktualisiert, hinzugefügt, geändert werden? User.first.upsert (: books_attributes =>?) ??? – user1735921

+0

@ user1735921 Es ist schon eine Weile her, seit ich MongoDB benutzt habe, aber ein kurzer Blick auf die aktuellen Docs-Shows - https://docs.mongodb.com/ruby-driver/master/tutorials/ruby-driver-bulk-operations/# Update-viele – gef