Módulo: Mongoid::Persistable::Upsertable

Incluido en:
Mongoid::Persistable
Definido en:
lib/mongoid/persistable/upsertable.rb

Overview

Define el comportamiento para las operaciones de persistencia que realizan una inserción de documentos.

Resumen del método de instancia colapsar

Detalles del método de instancia

#inserción(options = {}) ⇒ true

Realiza una operación de inserción del documento. Si el documento no existe en la base de datos, Mongo insertará uno nuevo; de lo contrario, los campos se sobrescribirán con nuevos valores en el documento existente.

Si la opción de reemplazo es verdadera, se eliminarán los atributos no especificados; si es falsa, se conservarán. La opción de reemplazo tiene el valor predeterminado falso en Mongoid 9.

Ejemplos:

Realiza una inserción en el documento.

document.upsert

Insertar el documento con reemplazar.

document.upsert(replace: true)

Inserción con atributos extra para usar al insertar.

document.upsert(set_on_insert: { created_at: DateTime.now })

Parámetros:

  • opciones (Hash) (por defecto: {})

    Las opciones de validación.

Opciones Hash (options):

  • : valide (true | false)

    Si se va a validar o no.

  • :reemplazar (true | false)

    Si reemplazar o no el documento al actualizar o insertar.

  • :set_on_insert (Hash)

    Los atributos que se incluirán si el documento aún no existe.

Devuelve:

  • (cierto)

    Verdadero.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# Archivo 'lib/mongoid/persistable/upsertable.rb', línea 36

def inserción(opciones = {})
  prepare_upsert(opciones) hacer
    si opciones[:reemplazar]
      si opciones[:set_on_insert]
        propagar ArgumentError, "no se puede especificar :set_on_insert con `replace: true`"
      end

      Colección.buscar(atomic_selector).replace_one(
        as_attributes, inserción: true, sesión: _sesión)
    else
      attrs = { "$set" => as_attributes }
      attrs["$setOnInsert"] = opciones[:set_on_insert] si opciones[:set_on_insert]

      Colección.buscar(atomic_selector).update_one(
        attrs, inserción: true, sesión: _sesión)
    end
  end
end