모듈: Mongoid::Contextual::Aggregable::Mongo

포함 항목:
mongo
다음에 정의됨:
lib/mongoid/contextual/aggregable/ Mongo.rb

개요

mongo 에서 값을 집계하기 위한 동작을 포함합니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#집계(필드) ⇒ 해시

제공된 필드 에 대한 모든 애그리게이션 값을 가져옵니다.

예시:

모든 애그리게이션 값을 가져옵니다.

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

매개변수:

  • 필드 (string | 기호)

    필드 이름입니다.

반환합니다:

  • (해시)

    애그리게이션 값을 포함하는 해시입니다. 문서를 찾을 수 없는 경우 반환된 해시는 0 의 개수, 합계 및 nil의 최대, 최소, 평균을 갖습니다.



27
28
29
30
31
32
33
34
35
36
37
38
39
# 파일 'lib/mongoid/contextual/aggregable/ Mongo.rb', 줄 27

def 집계(필드)
  결과 = 컬렉션.집계(
    파이프라인(필드),
    세션: _session,
    hint: 보기.hint
  ).to_a

  만약 결과.비어 있나요?
    집계 가능::EMPTY_RESULT.dup
  other
    결과.first
  end
end

#avg(필드) ⇒ Float

제공된 필드 의 평균값을 가져옵니다.

예시:

단일 필드의 평균을 구합니다.

aggregable.avg(:likes)

매개변수:

  • 필드 (기호)

    평균을 구할 필드 입니다.

반환합니다:

  • (Float)

    평균입니다.



49
50
51
# 파일 'lib/mongoid/contextual/aggregable/ Mongo.rb', 줄 49

def 평균(필드)
  집계(필드)['avg']
end

#최대(필드 = nil) ⇒ Float | 문서

제공된 필드 의 최대값을 가져옵니다. 차단 이 제공되면 Ruby의 열거 가능한 API 에 따라 필드 에 대한 가장 큰 값을 가진 문서를 반환합니다.

예시:

단일 필드 의 최대값을 가져옵니다.

aggregable.max(:likes)

최대값이 있는 문서 를 가져옵니다.

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

매개변수:

  • 필드 (기호) (기본값: nil)

    필드 를 최대로 설정합니다.

반환합니다:

  • (Float | Document)

    최대값 또는 최대값이 있는 문서입니다.



69
70
71
# 파일 'lib/mongoid/contextual/aggregable/ Mongo.rb', 줄 69

def 최대(필드 = nil)
  block_given? ? super() : 집계(필드)['max']
end

#min(필드 = nil) ⇒ Float | 문서

제공된 필드 의 최소값을 가져옵니다. 차단 제공되면 Ruby의 열거 가능한 API 에 따라 필드 값이 가장 작은 문서를 반환합니다.

예시:

단일 필드의 최소값을 가져옵니다.

aggregable.min(:likes)

최소값이 있는 문서 를 가져옵니다.

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

매개변수:

  • 필드 (기호) (기본값: nil)

    필드를 최소값으로 설정합니다.

반환합니다:

  • (Float | Document)

    최소값 또는 최소값이 있는 문서 입니다.



89
90
91
# 파일 'lib/mongoid/contextual/aggregable/ Mongo.rb', 줄 89

def min(필드 = nil)
  block_given? ? super() : 집계(필드)['min']
end

#합계(필드 = nil) ⇒ Float

제공된 필드 의 합계 값을 가져옵니다. 차단 이 제공되면 Ruby의 열거 가능한 API 에 따라 합계를 반환합니다.

예시:

단일 필드 의 합계를 가져옵니다.

aggregable.sum(:likes)

제공된 차단 의 합계를 가져옵니다.

aggregable.sum(&:likes)

매개변수:

  • 필드 (기호 | 숫자) (기본값: nil)

    합계할 필드 또는 차단 이 주어졌을 때 합계의 초기 값입니다.

반환합니다:

  • (Float)

    합계 값입니다.



106
107
108
109
110
# 파일 'lib/mongoid/contextual/aggregable/ Mongo.rb', 줄 106

def 합계(필드 = nil)
  반환 super(필드 || 0) 만약 block_given?

  집계(필드)['sum'] || 0
end