Módulo: Mongoid::Persistable::Pushable

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

Overview

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

Resumen del método de instancia colapsar

Detalles del método de instancia

#add_to_set(adds) ⇒ Documento

Añada los valores únicos a los arreglos sólo si el valor no existe ya en el arreglo.

Ejemplos:

Añade los valores a los conjuntos.

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

Parámetros:

  • agrega (encriptada)

    Los pares campo/valor que se agregarán.

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 a conjunto(agrega)
  preparar_operación_atómica hacer |ops|
    proceso_operaciones_atómicas(agrega) hacer |Campo, Valor|
      existente = enviar(Campo) || atributos[Campo]
      si existente.nil?
        atributos[Campo] = []
        # Lee el valor de los atributos:
        # https://jira.mongodb.org/browse/MONGOID-4874
        existente = atributos[Campo]
      end
      values = [ Valor ].nivelar(1)
      values.cada hacer |val|
        existente.push(val) a menos que existente.incluir?(val)
      end
      ops[atomic_attribute_name(Campo)] = { "$cada" => values }
    end
    { "$addToSet" => ops }
  end
end

#empujar(empujes) ⇒ Documento

Insertar un único valor o varios valores en matrices.

Ejemplos:

Agrega un solo valor a arreglos.

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

Insertar múltiples valores en matrices.

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

Parámetros:

  • empuja (encriptada)

    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|
    proceso_operaciones_atómicas(empuja) hacer |Campo, Valor|
      existente = enviar(Campo) || begin
        atributos[Campo] ||= []
        atributos[Campo]
      end
      values = [ Valor ].nivelar(1)
      values.cada{ |val| existente.push(val) }
      ops[atomic_attribute_name(Campo)] = { "$cada" => values }
    end
    { "$push" => ops }
  end
end