Módulo: Mongoid::Persistable::Upsertable
- Incluído em:
- Mongoid::Persistable
- Definido em:
- lib/mongoid/persistable/upsertable.rb
Visão geral
Define o comportamento para operações de persistência que atualizam documentos.
Recolhimento do Resumo do método de instância
-
#upsert(options = {}) ➤ true
Execute um upsert do documento.
Detalhes do método de instância
#upsert(options = {}) ➤ true
Execute um upsert do documento. Se o documento não existir no banco de banco de dados, o mongo inserirá um novo, caso contrário, os campos serão substituídos por novos valores no documento existente.
Se a opção de substituição for verdadeira, os atributos não especificados serão descartados e, se for falsa, os atributos não especificados serão mantidos. A opção de substituição tem como padrão falso no Mongoid 9.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# Arquivo 'lib/mongoid/persistable/upsertable.rb', linha 36 def upsert( = {}) prepare_upsert() fazer se [:replace] se [:set_on_insert] aumentar ArgumentError, "não é possível especificar :set_on_insert com `replace: true' " end collection.find(atomic_selector).replace_one( as_attributes, upsert: true, sessão: _session) mais attrs = { "$set" => as_attributes } attrs["$setOnInsert"] = [:set_on_insert] se [:set_on_insert] collection.find(atomic_selector).update_one( attrs, upsert: true, sessão: _session) end end end |