2012-11-11 14 views
5

Esiste un modo integrato per fare upsert (inserire se non esiste) in Mongoid? O dovrei controllare se un articolo esiste prima e solo dopo fare inserire/aggiornare?Upsert in Mongoide

risposta

2

c'è un metodo built-in upsert in Mongoid già

Model # upsert Esegue un upsert MongoDB sul documento. Se il documento esiste nel database, verrà sovrascritto con gli attributi correnti del documento in memoria. Se il documento non è esistente nel database, verrà inserito. Si noti che questo esegue solo i callback _ before | after | around} _upsert.

Tratto da http://mongoid.org/en/mongoid/docs/persistence.html

+0

Come fare per has_many. Supponiamo che l'utente abbia molti libri, voglio che i libri dell'utente vengano aggiornati, aggiunti, modificati? User.first.upsert (: books_attributes =>?) ??? – user1735921

+0

@ user1735921 è passato un po 'di tempo da quando ho usato MongoDB, ma una rapida occhiata agli attuali documenti mostra: https://docs.mongodb.com/ruby-driver/master/tutorials/ruby-driver-bulk-operations/# update-molti – gef