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

Incluído em:
Memória
Definido em:
build/mongoid-8.1/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.



17
18
19
20
21
# File 'build/mongoid-8.1/lib/mongoid/contextual/aggregable/memory.rb', linha 17

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.



31
32
33
34
35
36
37
# File 'build/mongoid-8.1/lib/mongoid/contextual/aggregable/memory.rb', linha 31

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.



55
56
57
58
59
# File 'build/mongoid-8.1/lib/mongoid/contextual/aggregable/memory.rb', linha 55

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.



77
78
79
80
81
# File 'build/mongoid-8.1/lib/mongoid/contextual/aggregable/memory.rb', linha 77

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) (padrão para: nil)

    O campo a ser somado.

Retorna:

  • (Numérico)

    O valor da soma.



95
96
97
98
99
# File 'build/mongoid-8.1/lib/mongoid/contextual/aggregable/memory.rb', linha 95

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

  aggregate_by(Campo, :sum) || 0
end