클래스: Mongo::Collection::View::MapReduce

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
열거 가능, 불변, 기록 가능, 재시가능
다음에 정의됨:
lib/ Mongo/ 컬렉션/view/map_reduce.rb

개요

컬렉션 뷰에서 맵/리듀스 작업과 관련된 동작을 제공합니다.

이후:

  • 2.0.0

상수 요약 접기

INLINE =

인라인 옵션입니다.

이후:

  • 2.1.0

'inline'.동결
REROOUT =
더 이상 사용되지 않습니다.

메시지 경로를 변경합니다.

이후:

  • 2.1.0

'MapReduce 작업을 프라이머리 서버 로 다시 라우팅합니다.'.동결

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

불변에 포함된 속성

#options

인스턴스 메서드 요약 접기

Retryable에 포함된 메서드

#read_Worker, #select_server, #write_Worker

Loggable에 포함된 메서드

#log_debug, #log_error, #log_fatal, #log_info, #log_warn, #logger

생성자 세부 정보

#initialize(view, map, reduce, options = {}) ⇒ MapReduce

제공된 컬렉션 뷰, 함수 및 옵션에 대한 맵/리듀스를 초기화합니다.

예시:

새 맵/리듀스 뷰를 만듭니다.

매개변수:

  • 보기 (Collection::View)

    컬렉션 보기입니다.

  • map (string)

    지도 함수입니다.

  • reduce (string)

    축소 함수입니다.

  • 옵션 (해시) (기본값: {})

    맵/리듀스 옵션.

이후:

  • 2.0.0

[소스 보기]

121
122
123
124
125
126
127
128
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 121

def 초기화(보기, map, reduce, 옵션 = {})
  @view = 보기
  @map_function = map.dup.동결
  @reduce_function = reduce.dup.동결
  @options = BSON::문서.신규(옵션).동결

  고객.log_warn('map_reduce 작업은 더 이상 사용되지 않습니다. 대신 집계 파이프라인을 사용하세요.')
end

인스턴스 속성 세부 정보

#map_functionstring (읽기 전용)

반환값 map 지도 함수입니다.

반환합니다:

  • (string)

    map 지도 함수입니다.

이후:

  • 2.0.0


48
49
50
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 48

def map_function
  @map_function
end

#reduce_functionstring (읽기 전용)

reduce reduce 함수를 반환합니다.

반환합니다:

  • (string)

    reduce reduce 함수.

이후:

  • 2.0.0


51
52
53
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 51

def reduce_function
  @reduce_function
end

#보기보기 (읽기 전용)

뷰를 반환합니다. 컬렉션 뷰를 반환합니다.

반환합니다:

  • (보기)

    view 컬렉션 보기.

이후:

  • 2.0.0


45
46
47
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 45

def 보기
  @view
end

인스턴스 메서드 세부 정보

# {|Each| ... } ⇒ 열거자

맵/리듀스에서 반환된 문서를 반복합니다.

예시:

맵/리듀스 결과를 반복합니다.

map_reduce.each do |document|
  p document
end

수율 매개변수:

  • (해시)

    일치하는 문서.

반환합니다:

  • (열거자)

    열거자입니다.

이후:

  • 2.0.0

[소스 보기]

71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 71

def 
  @cursor = nil
  Session = 고객.get_session(@options)
  서버 = cluster.Next_primary(nil, Session)
  컨텍스트 = 작업::Context.신규(클라이언트: 고객, 세션: Session, operation_timeout: 보기.operation_timeout)
  만약 서버.load_balancer?
    # 커서 비워지면 연결이 체크인됩니다.
    연결 = 서버..check_out(컨텍스트: 컨텍스트)
    결과 = send_initial_query_with_connection(연결, 컨텍스트.Session, 컨텍스트: 컨텍스트)
    결과 = send_fetch_query_with_connection(연결, Session) 하지 않는 한 인라인?
  other
    결과 = send_initial_query(서버, 컨텍스트)
    결과 = send_fetch_query(서버, Session) 하지 않는 한 인라인?
  end
  @cursor = 커서.신규(보기, 결과, 서버, 세션: Session)
  만약 block_given?
    @cursor. do |doc|
      yield doc
    end
  other
    @cursor.to_enum
  end
end

#실행Mongo::Operation::Result

결과를 조회하기 조회 오기 쿼리 를 수행하지 않고 맵 리듀스를 실행합니다.

if outputted to a collection.

예시:

맵 리듀스를 실행하여 원시 결과를 얻습니다.

map_reduce.execute

반환합니다:

이후:

  • 2.5.0

[소스 보기]

231
232
233
234
235
236
237
238
239
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 231

def 실행
  보기.send(:with_session, @options) do |Session|
    write_concern = 보기.write_concern_with_session(Session)
    컨텍스트 = 작업::Context.신규(클라이언트: 고객, 세션: Session)
    nro_write_with_retry(write_concern, 컨텍스트: 컨텍스트) do |연결, txn_num, 컨텍스트|
      send_initial_query_with_connection(연결, Session, 컨텍스트: 컨텍스트)
    end
  end
end

#finalize(function = nil) ⇒ MapReduce, string

작업에 대한 finalize 함수를 설정하거나 가져옵니다.

예시:

finalize 함수를 설정합니다.

map_reduce.finalize(function)

매개변수:

  • 함수 (string) (기본값: nil)

    JavaScript 함수를 마무리합니다.

반환합니다:

  • (MapReduce, string)

    새 MapReduce 작업 또는 함수 값입니다.

이후:

  • 2.0.0

[소스 보기]

106
107
108
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 106

def 마무리(함수 = nil)
  구성(:finalize, 함수)
end

#js_mode(value = nil) ⇒ MapReduce, ...

작업에 대한 jsMode 플래그를 설정하거나 가져옵니다.

예시:

작업에 대한 JavaScript 모드 를 설정합니다.

map_reduce.js_mode(true)

매개변수:

  • value (true, false) (기본값: nil)

    jsMode 값입니다.

반환합니다:

  • (MapReduce, true, false)

    새 MapReduce 작업 또는 jsMode 플래그의 값입니다.

이후:

  • 2.0.0

[소스 보기]

141
142
143
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 141

def js_mode(value = nil)
  구성(:js_mode, value)
end

#out(location = nil) ⇒ MapReduce, 해시

작업의 출력 위치를 설정하거나 가져옵니다.

예시:

출력을 인라인으로 설정합니다.

map_reduce.out(inline: 1)

병합할 출력 컬렉션을 설정합니다.

map_reduce.out(merge: 'users')

대체할 출력 컬렉션을 설정합니다.

map_reduce.out(replace: 'users')

출력 컬렉션 을 reduce로 설정합니다.

map_reduce.out(reduce: 'users')

매개변수:

  • 위치 (해시) (기본값: nil)

    출력 위치 세부 정보입니다.

반환합니다:

  • (MapReduce, Hash)

    새 MapReduce 작업 또는 출력 위치의 값입니다.

이후:

  • 2.0.0

[소스 보기]

165
166
167
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 165

def out(위치 = nil)
  구성(:out, 위치)
end

#out_collection_nameObject

맵 리듀스 결과가 기록되는 컬렉션 이름을 반환합니다. 결과가 인라인으로 반환되면 nil을 반환합니다.

이후:

  • 2.0.0

[소스 보기]

171
172
173
174
175
176
177
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 171

def out_collection_name
  만약 옵션[:out].response_to?(:keys)
    옵션[:out][OUT_ACTIONS.찾기 do |조치|
      옵션[:out][조치]
    end]
  end || 옵션[:out]
end

#out_database_name객체

맵 리듀스 결과가 기록되는 데이터베이스 이름을 반환합니다. 결과가 인라인으로 반환되면 nil을 반환합니다.

이후:

  • 2.0.0

[소스 보기]

181
182
183
184
185
186
187
188
189
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 181

def out_database_name
  만약 옵션[:out]
    만약 옵션[:out].response_to?(:keys) && (db = 옵션[:out][:db])
      db
    other
      database.이름
    end
  end
end

#scope(object = nil) ⇒ MapReduce, 해시

작업에 대한 범위를 설정하거나 가져옵니다.

예시:

범위 값을 설정합니다.

map_reduce.scope(value: 'test')

매개변수:

  • 객체 (해시) (기본값: nil)

    범위 객체입니다.

반환합니다:

  • (MapReduce, Hash)

    새 MapReduce 작업 또는 범위 값입니다.

이후:

  • 2.0.0

[소스 보기]

202
203
204
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 202

def 범위(객체 = nil)
  구성(:scope, 객체)
end

#verbose(value = nil) ⇒ MapReduce, Hash

결과에 타이밍 정보를 포함할지 여부입니다.

예시:

verbose 값을 설정합니다.

map_reduce.verbose(false)

매개변수:

  • value (true, false) (기본값: nil)

    결과에 타이밍 정보를 포함할지 여부입니다.

반환합니다:

  • (MapReduce, Hash)

    새로운 MapReduce 작업 또는 verbose 옵션의 값입니다.

이후:

  • 2.0.5

[소스 보기]

218
219
220
# 파일 'lib/ Mongo/ 컬렉션/view/map_reduce.rb', 줄 218

def verbose(value = nil)
  구성(:verbose, value)
end