Módulo: Mongoid::Contextual::aggregable::memory

Incluído em:
Memória
Definido em:
lib/mongoid/contextual/aggregable/memory.rb

Visão geral

Contém comportamento para agregar valores na memória.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#agregados(campo) ➤ Hash

Obtenha todos os valores agregados para o campo fornecido . Fornecido para consistência de interface com Aggregable::Mongo.

Parâmetros:

  • Campo (string | Símbolo)

    O nome do campo .

Retorna:

  • (Hash)

    Um Hash contendo os valores agregados. Se nenhum documento estiver presente, o Hash retornado terá contagem, soma de 0 e max, min, avg de zero.



18
19
20
21
22
# File 'lib/mongoid/contextual/aggregable/memory.rb', linha 18

def agregados(Campo)
  %w(contar soma avg min max).cada_com_objeto({}) fazer |Método, hash|
    hash[Método] = enviar(Método, Campo)
  end
end

#avg(campo) ➤ Numérico

Obtenha o valor médio do campo fornecido .

Exemplos:

Obtenha a média de um único campo.

aggregable.avg(:likes)

Parâmetros:

  • Campo (Símbolo)

    O campo para média.

Retorna:

  • (Numérico)

    A média.



32
33
34
35
36
37
38
# File 'lib/mongoid/contextual/aggregable/memory.rb', linha 32

def avg(Campo)
  Total = contar { |doc| !doc.enviar(Campo).nada? }
  Método nada a menos que Total > 0

  Total = Total.to_f se Total.is_a?(Inteiro)
  soma(Campo) / Total
end

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

Obtenha o valor máximo do campo fornecido . Se for fornecido um bloco, retornará o documento com o maior valor para o campo}, de acordo com a API enumerável do Ruby.

Exemplos:

Obtenha o máximo de um único campo.

aggregable.max(:likes)

Obtenha o documento com o valor máximo.

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

Parâmetros:

  • Campo (Símbolo) (padrão para: nil)

    O campo para o máximo.

Retorna:

  • (Numérico | Documento)

    O valor máximo ou documento com o valor máximo.



56
57
58
59
60
# File 'lib/mongoid/contextual/aggregable/memory.rb', linha 56

def max(Campo = nada)
  Método super() se block_given?

  aggregate_by(Campo, :max)
end

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

Obtenha o valor mínimo do campo fornecido. Se for fornecido um bloco, retornará o documento com o menor valor para o campo, de acordo com a API enumerável do Ruby.

Exemplos:

Obtenha o mínimo de um único campo.

aggregable.min(:likes)

Obtenha o documento com o valor mínimo.

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

Parâmetros:

  • Campo (Símbolo) (padrão para: nil)

    O campo para min.

Retorna:

  • (Numérico | Documento)

    O valor mínimo ou documento com o valor mínimo.



78
79
80
81
82
# File 'lib/mongoid/contextual/aggregable/memory.rb', linha 78

def min(Campo = nada)
  Método super() se block_given?

  aggregate_by(Campo, :min)
end

#soma(campo = nil) ➤ Numérico

Obtenha o valor da soma do campo fornecido . Se for fornecido um bloco, retornará a soma de acordo com a API enumerável do Ruby.

Exemplos:

Obtenha a soma de um único campo.

aggregable.sum(:likes)

Obtenha a soma do bloco fornecido.

aggregable.sum(&:likes)

Parâmetros:

  • Campo (Símbolo | Numérico) (padrão para: nil)

    O campo a ser somado, ou o valor inicial da soma quando um bloco é fornecido.

Retorna:

  • (Numérico)

    O valor da soma.



97
98
99
100
101
# File 'lib/mongoid/contextual/aggregable/memory.rb', linha 97

def soma(Campo = nada)
  Método super(Campo || 0) se block_given?

  aggregate_by(Campo, :sum) || 0
end