Módulo: Mongoid::Contextual::Aggregable::Memory

Incluido en:
Memoria
Definido en:
lib/mongoid/contextual/agregable/memoria.rb

Overview

Contiene comportamiento para agregar valores en la memoria.

Resumen del método de instancia colapsar

Detalles del método de instancia

#agrega(campo) ⇒ Hash

Obtener todos los valores agregados para el campo proporcionado. Proporcionado para la coherencia de la interfaz con Aggregable::Mongo.

Parámetros:

  • Campo (String | Símbolo)

    El nombre del campo.

Devuelve:

  • (encriptada)

    Un hash que contiene los valores agregados. Si no hay documentos, el hash devuelto tendrá un recuento, una suma de 0 y un máximo, un mínimo y un promedio de cero.



18
19
20
21
22
# Archivo 'lib/mongoid/contextual/aggregable/memory.rb', línea 18

def agregados(Campo)
  %w(count suma promedio min máximo).each_with_object({}) hacer |Método, hash|
    hash[Método] = enviar(Método, Campo)
  end
end

#avg(campo) ⇒ Numeric

Obtenga el valor promedio del campo proporcionado.

Ejemplos:

Obtiene el promedio de un solo campo.

aggregable.avg(:likes)

Parámetros:

  • Campo (Símbolo)

    El campo a promediar.

Devuelve:

  • (Numérico)

    El promedio.



32
33
34
35
36
37
38
# Archivo 'lib/mongoid/contextual/aggregable/memory.rb', línea 32

def promedio(Campo)
  total = count { |doc| !doc.enviar(Campo).nil? }
  return nulo a menos que total > 0

  total = total.to_f si total.is_a?(entero)
  suma(Campo) / total
end

#max(field = nil) ⇒ Numérico | Documento

Obtén el valor máximo del campo proporcionado. Si se proporciona un bloque, devolverá el Documento con el mayor valor para el campo, de acuerdo con la API Enumerable de Ruby.

Ejemplos:

Obtener el valor máximo de un solo campo.

aggregable.max(:likes)

Obtener el documento con el valor máximo.

aggregable.max do |a, b|
  a.likes <=> b.likes
end

Parámetros:

  • Campo (Símbolo) (predeterminado: nulo)

    El campo al máximo.

Devuelve:

  • (Numérico | Documento)

    El valor máximo o el documento con el valor máximo.



56
57
58
59
60
# Archivo 'lib/mongoid/contextual/aggregable/memory.rb', línea 56

def máximo(Campo = nulo)
  return super() si ¿block_given?

  aggregate_by(Campo, :máximo)
end

#min(campo = nil) ⇒ Numérico | Documento

Obtén el valor mínimo del campo proporcionado. Si se proporciona un bloque, devolverá el Documento con el valor más pequeño para el campo, de acuerdo con la API enumerable de Ruby.

Ejemplos:

Obtener el mínimo de un solo campo.

aggregable.min(:likes)

Obtener el documento con el valor min.

aggregable.min do |a, b|
  a.likes <=> b.likes
end

Parámetros:

  • Campo (Símbolo) (predeterminado: nulo)

    El campo a min.

Devuelve:

  • (Numérico | Documento)

    El valor mínimo o documento con el valor mínimo.



78
79
80
81
82
# Archivo 'lib/mongoid/contextual/aggregable/memory.rb', línea 78

def min(Campo = nulo)
  return super() si ¿block_given?

  aggregate_by(Campo, :min)
end

#suma(campo = nil) ⇒ Numérico

Obtenga el valor sumado del campo proporcionado. Si se proporciona un bloque, devolverá la suma conforme a la API de enumerables de Ruby.

Ejemplos:

Obtenga la suma de un solo campo.

aggregable.sum(:likes)

Obtener la suma del bloque proporcionado.

aggregable.sum(&:likes)

Parámetros:

  • Campo (Simbolo | Numérico) (predeterminado: nulo)

    El campo a sumar, o el valor inicial de la suma cuando se proporciona un bloque.

Devuelve:

  • (Numérico)

    El valor de la suma.



97
98
99
100
101
# Archivo 'lib/mongoid/contextual/aggregable/memory.rb', línea 97

def suma(Campo = nulo)
  return super(Campo || 0) si ¿block_given?

  aggregate_by(Campo, :suma) || 0
end