클래스: Mongo::Operation::Result

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
Enumerable
다음에 정의됨:
lib/ Mongo/operation/result.rb,
lib/ Mongo/operation/shared/result/aggregatable.rb

개요

유선 프로토콜 응답에 대한 결과 래퍼입니다.

작업에는 0개 또는 1개의 응답이 있습니다. 응답이 0인 유일한 작업은 승인되지 않은 쓰기입니다. 다른 모든 작업은 하나의 회신을 생성합니다. 이 클래스는 작업이 응답을 생성하지 않은 경우(예: 성공한 것으로 가정)에도 작업(예: 작업 성공 여부 확인)할 수 있는 객체를 제공합니다.

이후:

  • 2.0.0

직접 알려진 하위 클래스

삭제::BulkResult, Insert::BulkResult, 업데이트::BulkResult

네임스페이스 아래에 정의됨

모듈: 집계 가능

상수 요약 접기

CURSOR =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

애그리게이션에서 커서 문서의 필드 이름입니다.

이후:

  • 2.2.0

'cursor'
CURSOR_ID =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서 문서의 커서 ID 필드입니다.

이후:

  • 2.2.0

'id'
FIRST_BACH =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서의 첫 번째 배치에 대한 필드 이름입니다.

이후:

  • 2.2.0

'firstBatch'
NEXT_BACH =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서의 다음 배치에 대한 필드 이름입니다.

이후:

  • 2.2.0

'NextBatch'
NAMESPACE =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서 문서 의 네임스페이스 필드 입니다.

이후:

  • 2.2.0

'ns'
N =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

쓰기에서 업데이트된 문서 수입니다.

이후:

  • 2.0.0

'n'
확인 =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

결과의 ok 상태 필드입니다.

이후:

  • 2.0.0

'확인'
결과 =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

결과 필드 상수입니다.

이후:

  • 2.2.0

'결과'

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(replies, connection_description = nil, connection_global_id = nil, context: nil, connection: nil) ⇒ 결과

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

새 결과를 초기화합니다.

승인되지 않은 쓰기의 경우 회신으로 nil을 전달합니다.

For all other operations, replies must be a Protocol::Message instance or an array containing a single Protocol::Message instance.

매개변수:

  • 답장 (Protocol::Message | Array<Protocol::Message> | nil)

    유선 프로토콜이 응답합니다.

  • connection_description (Server::Description | nil) (기본값: nil)

    이 결과의 대상 작업을 수행한 서버에 대한 MongoDB Server 설명입니다. 이 매개변수는 기존 mongo_kerberos 라이브러리와의 호환성을 위해 nil이 될 수 있지만 적절한 드라이버에서는 항상 nil이 아니어야 합니다.

  • connection_global_id (정수) (기본값: nil)

    이 결과가 적용된 작업이 수행된 연결의 글로벌 ID입니다.

  • 컨텍스트 (Operation::Context | nil) (기본값: nil)

    이 결과가 생성될 때 활성화된 컨텍스트입니다.

이후:

  • 2.0.0



104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# 파일 'lib/ Mongo/operation/result.rb', 104줄

def 초기화(답장, connection_description = nil, connection_global_id = nil, 컨텍스트: nil, 연결: nil)
  @context = 컨텍스트

  반환 하지 않는 한 답장

  만약 답장.is_a?(배열)
    올리다 ArgumentError, "주어진 #{replies.length}"에서 회신은 하나만 지원됩니다(또는 0개) . 만약 답장.분량 != 1

    회신 = 답장.first
  other
    회신 = 답장
  end
  하지 않는 한 회신.is_a?(protocol::메시지)
    올리다 ArgumentError, "인수는 메시지 인스턴스여야 하지만 #{회신.클래스}: #{회신.검사}"
  end

  @replies = [ 회신 ]
  @connection_description = connection_description
  @connection_global_id = connection_global_id
  @connection = 연결
end

인스턴스 속성 세부 정보

#연결 객체(읽기 전용)

이후:

  • 2.0.0



149
150
151
# 파일 'lib/ Mongo/operation/result.rb', 149줄

def 연결
  @connection
end

#connection_descriptionServer::Description (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 결과의 대상이 되는 작업이 수행된 서버에 대한 MongoDB Server 설명을 반환합니다.

반환합니다:

  • (Server::Description)

    이 결과의 대상인 작업이 수행된 서버 에 대한 서버 설명입니다.

이후:

  • 2.0.0



135
136
137
# 파일 'lib/ Mongo/operation/result.rb', 135줄

def connection_description
  @connection_description
end

#connection_global_id객체 (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

반환값 글로벌은 이 결과에 대한 작업이 수행된 연결에 대한 것입니다.

반환합니다:

  • (객체)

    전역은 이 결과에 대한 작업이 수행된 연결입니다.

이후:

  • 2.0.0



141
142
143
# 파일 'lib/ Mongo/operation/result.rb', 141줄

def connection_global_id
  @connection_global_id
end

#contextOperation::Context | nil (읽기 전용)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 결과가 생성될 때 활성화된 작업 컨텍스트(있는 경우)를 반환합니다.

반환합니다:

  • (Operation::Context | nil)

    이 결과가 생성될 때 활성화된 작업 컨텍스트(있는 경우)입니다.

이후:

  • 2.0.0



147
148
149
# 파일 'lib/ Mongo/operation/result.rb', 147줄

def 컨텍스트
  @context
end

#repliesArray<Protocol::Message> (readonly)

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

래핑된 유선 프로토콜 응답을 반환합니다.

반환합니다:

이후:

  • 2.0.0



129
130
131
# 파일 'lib/ Mongo/operation/result.rb', 129줄

def 답장
  @replies
end

인스턴스 메서드 세부 정보

#승인되었나요?true, false

결과가 인정되나요?

반환합니다:

  • (true, false)

    결과가 승인된 경우.

이후:

  • 2.0.0



161
162
163
# 파일 'lib/ Mongo/operation/result.rb', 161줄

def 인정?
  !!@replies
end

#cluster_timeClusterTime | nil

서버 응답에서 보고된 클러스터 시간을 가져옵니다.

버전 2.9.0 에서 변경됨: 이 속성은 BSON::Document의 하위 클래스인 ClusterTime의 인스턴스가 되었습니다. 이전에는 BSON::Document의 인스턴스였습니다.

예시:

클러스터 시간을 가져옵니다.

result.cluster_time

반환합니다:

  • (ClusterTime | nil)

    클러스터 시간 문서입니다.

이후:

  • 2.5.0



427
428
429
# 파일 'lib/ Mongo/operation/result.rb', 427줄

def cluster_time
  first_document && ClusterTime[first_document['$clusterTime']]
end

#cursor_id정수

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

참고:

커서 ID가 0 이면 서버에 커서가 없음을 나타냅니다.

응답이 승인되면 커서 ID를 가져옵니다.

예시:

커서 ID를 가져옵니다.

result.cursor_id

반환합니다:

  • (정수)

    커서 ID입니다.

이후:

  • 2.0.0



185
186
187
# 파일 'lib/ Mongo/operation/result.rb', 185줄

def cursor_id
  인정? ? 답장.last.cursor_id : 0
end

문서 # 개 ⇒ Array<BSON::Document>

결과에서 문서를 가져옵니다.

예시:

문서를 가져옵니다.

result.documents

반환합니다:

  • (Array<BSON::Document>)

    문서.

이후:

  • 2.0.0



209
210
211
212
213
214
215
# 파일 'lib/ Mongo/operation/result.rb', 209줄

def 문서
  만약 인정?
    답장.flat_map(&:documents)
  other
    []
  end
end

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

회신의 문서를 반복합니다.

예시:

문서를 반복합니다.

result.each do |doc|
  p doc
end

수율 매개변수:

  • (BSON::Document)

    문서를 결과에 표시합니다.

반환합니다:

  • (열거자)

    열거자입니다.

이후:

  • 2.0.0



230
231
232
# 파일 'lib/ Mongo/operation/result.rb', 230줄

def (&차단)
  문서.(&차단)
end

#errorError::OperationFailure::Family

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 결과를 처리 동안 발생할 예외 인스턴스 (Error::OperationFailure::Family)입니다.

이 메서드는 결과가 성공하지 못한 경우에만 호출해야 합니다.

반환합니다:

  • (Error::OperationFailure::Family)

    예외입니다.

이후:

  • 2.0.0



344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
# 파일 'lib/ Mongo/operation/result.rb', 344줄

def 오류
  @error ||= operation_failure_class.신규(
    구문 분석기.메시지,
    self,
    코드: 구문 분석기.코드,
    code_name: 구문 분석기.code_name,
    write_concern_error_document: 구문 분석기.write_concern_error_document,
    write_concern_error_code: 구문 분석기.write_concern_error_code,
    write_concern_error_code_name: 구문 분석기.write_concern_error_code_name,
    write_concern_error_labels: 구문 분석기.write_concern_error_labels,
    레이블: 구문 분석기.labels,
    wtimeout: 구문 분석기.w 시간 초과,
    connection_description: connection_description,
    문서: 구문 분석기.문서,
    server_message: 구문 분석기.server_message
  )
end

#has_cursor_id?true, false

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

결과에 cursor_id가 포함되는지 여부

반환합니다:

  • (true, false)

    결과에 cursor_id가 포함된 경우.

이후:

  • 2.0.0



170
171
172
# 파일 'lib/ Mongo/operation/result.rb', 170줄

def has_cursor_id?
  인정? && 답장.last.response_to?(:cursor_id)
end

#검사string

결과에 대한 예쁜 형식의 검사를 가져옵니다.

예시:

결과를 검사합니다.

result.inspect

반환합니다:

  • (string)

    검사.

이후:

  • 2.0.0



243
244
245
# 파일 'lib/ Mongo/operation/result.rb', 243줄

def 검사
  "#<#{self.class.name}:0x#{object_id} 문서=#{문서}>"
end

#레이블배열

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

결과와 관련된 오류 레이블 집합을 가져옵니다.

예시:

레이블을 가져옵니다.

result.labels

반환합니다:

  • (배열)

    레이블 레이블 집합입니다.

이후:

  • 2.7.0



440
441
442
# 파일 'lib/ Mongo/operation/result.rb', 440줄

def labels
  @labels ||= 구문 분석기.labels
end

#네임스페이스Nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

커서 의 네임스페이스 가져옵니다. 이 메서드는 서버 응답에서 'ns'가 포함된 결과 클래스에서 정의되어야 합니다.

반환합니다:

  • (Nil)

이후:

  • 2.0.0



196
197
198
# 파일 'lib/ Mongo/operation/result.rb', 196줄

def namespace
  nil
end

#네?true, false

첫 번째 문서의 확인 필드 확인합니다.

예시:

확인 필드를 확인합니다.

result.ok?

반환합니다:

  • (true, false)

    명령이 정상을 반환한 경우.

이후:

  • 2.1.0



308
309
310
311
312
313
314
315
# 파일 'lib/ Mongo/operation/result.rb', 308줄

def 좋아?
  # first_document[OK]는 부동 소수점이며, 서버는 다음을 반환할 수 있습니다.
  # ok를 BSON int32, BSON int64 또는 BSON double로 지정합니다.
  # 숫자 1 은 부동 소수점으로 정확히 표현할 수 있으므로
  # 1.0 == 1 는 항상 올바르게 수행됩니다.
  # (서버가 성공하여 1 이외의 것을 반환할 때까지, 즉)
  first_document[확인] == 1
end

#operation_time객체 | nil

서버 응답에서 보고된 optime을 가져옵니다.

예시:

optime 을 가져옵니다.

result.operation_time

반환합니다:

  • (객체 | nil)

    optime 값입니다.

이후:

  • 2.5.0



410
411
412
# 파일 'lib/ Mongo/operation/result.rb', 410줄

def operation_time
  first_document && first_document[OPERATION_TIME]
end

#replyProtocol::Message

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

결과에서 회신을 받습니다.

회신이 없는 경우(즉, 작업이 승인되지 않은 쓰기인 경우) nil을 반환합니다.

반환합니다:

이후:

  • 2.0.0



256
257
258
259
260
# 파일 'lib/ Mongo/operation/result.rb', 256줄

def 회신
  반환 하지 않는 한 인정?

  답장.first
end

#반환 된_카운트 ⇒ 정수

이 배치에서 서버가 반환한 문서 수를 가져옵니다.

반환합니다:

  • (정수)

    반환된 문서 수입니다.

이후:

  • 2.0.0



268
269
270
271
272
273
274
# 파일 'lib/ Mongo/operation/result.rb', 268줄

def Returned_count
  만약 인정?
    회신.number_returned
  other
    0
  end
end

#snapshot_timestamp객체

이후:

  • 2.0.0



451
452
453
454
455
# 파일 'lib/ Mongo/operation/result.rb', 451줄

def snapshot_timestamp
  반환 하지 않는 한 doc = 회신.문서.first

  doc['cursor']&.[]('atClusterTime') || doc['atClusterTime']
end

#성공했습니까?true, false

참고:

쓰기 (write) 가 승인되지 않은 경우에는 항상 true가 반환됩니다.

결과가 명령인 경우 성공으로 간주되었는지 확인합니다.

예시:

명령이 성공했습니까?

result.successful?

반환합니다:

  • (true, false)

    명령이 성공한 경우.

이후:

  • 2.0.0



289
290
291
292
293
294
295
296
297
# 파일 'lib/ Mongo/operation/result.rb', 289줄

def 성공했니?
  반환 true 하지 않는 한 인정?

  만약 first_document.has_key?(확인)
    좋아? && 구문 분석기.메시지.비어 있나요?
  other
    !query_failure? && 구문 분석기.메시지.비어 있나요?
  end
end

#topology_versionTopologyVersion | nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

토폴로지 버전을 반환합니다.

반환합니다:

이후:

  • 2.0.0



373
374
375
376
377
378
379
# 파일 'lib/ Mongo/operation/result.rb', 373줄

def topology_version
  하지 않는 한 정의됨?(@topology_version)
    @topology_version = first_document['topologyVersion'] &&
                        토폴로지 버전.신규(first_document['topologyVersion'])
  end
  @topology_version
end

#유효성을 검사합니다!결과

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

참고:

인증 인증 가 발생하므로 쓰기 관련 오류만 확인합니다.

오류를 확인하여 결과의 유효성을 검사합니다.

예시:

결과를 검증합니다.

result.validate!

반환합니다:

  • (결과)

    검증을 통과한 경우의 결과입니다.

다음을 발생시킵니다.

  • (Error::OperationFailure::Family)

    결과에 오류가 있는 경우.

이후:

  • 2.0.0



332
333
334
# 파일 'lib/ Mongo/operation/result.rb', 332줄

def 유효성을 검사합니다!
  성공했니? ? self : raise_operation_failure
end

#write_concern_error?부울

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

쓰기 고려 오류로 인해 작업이 실패했는지 여부입니다.

반환합니다:

  • (부울)

이후:

  • 2.0.0



447
448
449
# 파일 'lib/ Mongo/operation/result.rb', 447줄

def write_concern_error?
  !!(first_document && first_document['writeConcernError'])
end

#write_count정수 다른 이름으로도 알려져 있음: n

서버에서 작성한 문서 수를 가져옵니다.

예시:

작성된 문서 수를 가져옵니다.

result.written_count

반환합니다:

  • (정수)

    작성된 문서 수입니다.

이후:

  • 2.0.0



390
391
392
393
394
395
396
# 파일 'lib/ Mongo/operation/result.rb', 390줄

def write_count
  만약 인정?
    first_document[N] || 0
  other
    0
  end
end