Módulo: Mongoid::Persistable::Pushable

Ampliado por:
ActiveSupport::Preocupación
Incluido en:
Mongoid::Persistable
Definido en:
lib/mongoid/persistable/pushable.rb

Overview

Define el comportamiento de las operaciones $push y $addToSet.

Colapso del resumen del método de instancia

Detalles del método de instancia

#add_to_set(agrega) ⇒ Documento

Agregue los valores individuales a las matrices solo si el valor aún no existe en la matriz.

Ejemplos:

Añade los valores a los conjuntos.

document.add_to_set(names: "James", aliases: "Bond")

Parámetros:

  • agrega (Hash)

    Los pares campo/valor a agregar.

Devuelve:



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# Archivo 'lib/mongoid/persistable/pushable.rb', línea 20

def añadir_al_conjunto(agrega)
  preparar_operación_atómica hacer |ops|
    operaciones atómicas del proceso(agrega) hacer |Campo, valor|
      existente = Enviar(Campo) || atributos[Campo]
      Si existente.nil?
        atributos[Campo] = []
        # Leer el valor de los atributos:
        # https://jira.mongodb.org/browse/MONGOID-4874
        existente = atributos[Campo]
      end
      values = [ valor ].aplanar(1)
      values.cada hacer |val|
        existente.Push(val) a no ser que existente.¿incluir?(val)
      end
      ops[nombre_del_atributo_atómico(Campo)] = { "$cada" => values }
    end
    { "$addToSet" => ops }
  end
end

#push(empuja) ⇒ Documento

Insertar un único valor o varios valores en matrices.

Ejemplos:

Insertar un único valor en las matrices.

document.push(names: "James", aliases: "007")

Insertar múltiples valores en matrices.

document.push(names: [ "James", "Bond" ])

Parámetros:

  • empuja (Hash)

    Las operaciones $push.

Devuelve:



51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Archivo 'lib/mongoid/persistable/pushable.rb', línea 51

def Push(empuja)
  preparar_operación_atómica hacer |ops|
    operaciones atómicas del proceso(empuja) hacer |Campo, valor|
      existente = Enviar(Campo) || begin
        atributos[Campo] ||= []
        atributos[Campo]
      end
      values = [ valor ].aplanar(1)
      values.cada{ |val| existente.Push(val) }
      ops[nombre_del_atributo_atómico(Campo)] = { "$cada" => values }
    end
    { "$push" => ops }
  end
end