Módulo: Mongoid::Contextual::Agregable::Mongo

Incluido en:
Mongo
Definido en:
lib/mongoid/contextual/agregable/mongo.rb

Overview

Contiene el comportamiento para agregar valores en Mongo.

Colapso del resumen del método de instancia

Detalles del método de instancia

#agregados(campo) ⇒ Hash

Obtenga todos los valores agregados para el campo proporcionado.

Ejemplos:

Obtenga 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 (Cadena | Símbolo)

    El nombre del campo.

Devuelve:

  • (Hash)

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



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

def agregados(Campo)
  resultado = Colección.Agregar(pipeline(Campo), sesión: _sesión).to_a
  Si resultado.¿vacío?
    Agregable::EMPTY_RESULT.dup
  else
    resultado.primera
  end
end

#avg(campo) ⇒ Flotante

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:

  • (Flotar) -

    El promedio.



46
47
48
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 46

def promedio(Campo)
  agregados(Campo)["promedio"]
end

# máx. (campo = nulo)Flotante | Documento

Obtiene el valor máximo del campo proporcionado. Si se proporciona un bloque, se devolverá el documento con el mayor valor para el campo, de acuerdo con la API enumerable de Ruby.

Ejemplos:

Obtenga el máximo de un solo campo.

aggregable.max(:likes)

Obtenga 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:

  • (Flotador| Documento)

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



66
67
68
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 66

def máximo(Campo = nulo)
  ¿bloque_dado? ? Super() : agregados(Campo)["máximo"]
end

#min(campo = nulo) ⇒ Flotante | Documento

Obtiene el valor mínimo del campo proporcionado. Si se proporciona un bloque, se devolverá el documento con el valor mínimo para el campo, de acuerdo con la API enumerable de Ruby.

Ejemplos:

Obtener el mínimo de un solo campo.

aggregable.min(:likes)

Obtenga el documento con el valor mínimo.

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

Parámetros:

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

    El campo a min.

Devuelve:

  • (Flotador| Documento)

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



86
87
88
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 86

def min(Campo = nulo)
  ¿bloque_dado? ? Super() : agregados(Campo)["min"]
end

#suma(campo = nulo) ⇒ Flotante

Obtiene el valor de la suma del campo proporcionado. Si se proporciona un bloque, se devolverá la suma según la API enumerable de Ruby.

Ejemplos:

Obtener la suma de un solo campo.

aggregable.sum(:likes)

Obtenga 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 otorga un bloque.

Devuelve:

  • (Flotar) -

    El valor de la suma.



103
104
105
106
107
# Archivo 'lib/mongoid/contextual/aggregable/mongo.rb', línea 103

def suma(Campo = nulo)
  return Super(Campo || 0) Si ¿bloque_dado?

  agregados(Campo)["suma"] || 0
end