Módulo: Mongoid::Contextual::Aggregable::Mongo

Incluido en:
mongo
Definido en:
lib/mongoid/contextual/aggregable/mongo.rb

Overview

Contiene el comportamiento para agregar valores en Mongo.

Resumen del método de instancia colapsar

Detalles del método de instancia

#agrega(campo) ⇒ Hash

Obten todos los valores agregados para el campo proporcionado.

Ejemplos:

Obtén todos los valores agregados.

aggregable.aggregates(:likes)
# => {
#   "count" => 2.0,
#   "max" => 1000.0,
#   "min" => 500.0,
#   "sum" => 1500.0,
#   "avg" => 750.0
# }

Parámetros:

  • Campo (String | Símbolo)

    El nombre del campo.

Devuelve:

  • (encriptada)

    Un Hash que contiene los valores agregados. Si no se encuentran documentos, el Hash devuelto tendrá un recuento, la suma de 0 y el valor máximo, mínimo y promedio de nulo.



27
28
29
30
31
32
33
34
35
36
37
38
39
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 27

def agregados(Campo)
  Resultado = Colección.Agregar(
    pipeline(Campo),
    sesión: _sesión,
    hint: vista.hint
  ).to_a

  si Resultado.¿vacío?
    Agregable::EMPTY_RESULT.dup
  else
    Resultado.primero
  end
end

#avg(campo) ⇒ Float

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:

  • (Float)

    El promedio.



49
50
51
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 49

def promedio(Campo)
  agregados(Campo)['avg']
end

#max(campo = nil) ⇒ Float | Documento

Obtén el valor máximo del campo proporcionado. Si se proporciona un bloque, retornará el Document 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) (valor por defecto: nil)

    El campo al máximo.

Devuelve:

  • (Float | Documento)

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



69
70
71
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 69

def máximo(Campo = nulo)
  ¿block_given? ? super() : agregados(Campo)['max']
end

#min(campo = nil) ⇒ Float | Document

Obten el valor mínimo del campo proporcionado. Si se proporciona un bloque, devolverá el document 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) (valor por defecto: nil)

    El campo a min.

Devuelve:

  • (Float | Documento)

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



89
90
91
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 89

def min(Campo = nulo)
  ¿block_given? ? super() : agregados(Campo)['min']
end

#suma(campo = nil) ⇒ Float

GET el valor total del campo proporcionado. Si se proporciona un bloque, devolverá la suma de acuerdo con la API enumerable 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) (valor por defecto: nil)

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

Devuelve:

  • (Float)

    El valor total.



106
107
108
109
110
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 106

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

  agregados(Campo)['sum'] || 0
end