클래스: Mongo::Database

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
재시도 가능
다음에 정의됨:
lib/mongo/database.rb,
lib/mongo/database/view.rb,
lib/mongo/database/cursor_command_view.rb

개요

db 서버 의 데이터베이스 와 이 수준에서 실행할 수 있는 작업을 나타냅니다.

이후:

  • 2.0.0

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

클래스: CursorCommandView, View

상수 요약 접기

ADMIN =

관리 데이터베이스 이름입니다.

이후:

  • 2.0.0

'관리자'
명령 =

데이터베이스 명령이 작동하는 ' 컬렉션 "입니다.

이후:

  • 2.0.0

'$cmd'
DEFAULT_OPTIONS =

기본값 데이터베이스 옵션입니다.

이후:

  • 2.0.0

옵션::편집됨.신규(database: ADMIN).동결
NAME =
더 이상 사용되지 않습니다.

데이터베이스 이름 필드 상수입니다.

이후:

  • 2.1.0

'이름'
데이터베이스 =

데이터베이스 상수입니다.

이후:

  • 2.1.0

'databases'
NAMESPACES =

모든 컬렉션 이름을 포함하는 컬렉션 의 이름입니다.

이후:

  • 2.0.0

'system.namespaces'

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

Retryable에 포함된 메서드

#read_Worker, #select_server, #with_overload_retry, #write_Worker

생성자 세부 정보

#initialize(클라이언트, name, options = {}) ⇒ 데이터베이스

새 데이터베이스 객체 를 인스턴스화합니다.

예시:

데이터베이스 를 인스턴스화합니다.

Mongo::Database.new(client, :test)

매개변수:

  • 고객 (Mongo::Client)

    운전자 클라이언트.

  • 이름 (string, 기호)

    데이터베이스의 이름입니다.

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

    옵션.

옵션 해시(options):

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며, 이는 값이 클라이언트 로부터 상속됨을 의미합니다.

다음을 발생시킵니다.

  • (Mongo::Database::InvalidName)

    이름이 nil인 경우.

이후:

  • 2.0.0



479
480
481
482
483
484
485
486
487
488
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 479

def 초기화(고객, 이름, 옵션 = {})
  올리다 오류::InvalidDatabaseName.신규 하지 않는 한 이름
  만약 Lint.활성화? && !(이름.is_a?(문자열) || 이름.is_a?(기호))
    올리다 "데이터베이스 이름은 string 또는 기호여야 합니다: #{name}"
  end

  @client = 고객
  @name = 이름.to_s.동결
  @options = 옵션.동결
end

인스턴스 속성 세부 정보

#클라이언트클라이언트 (읽기 전용)

반환값 클라이언트 데이터베이스 클라이언트 입니다.

반환합니다:

  • (클라이언트)

    클라이언트 데이터베이스 클라이언트입니다.

이후:

  • 2.0.0



61
62
63
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 61

def 고객
  @client
end

#이름string (읽기 전용)

반환값 name 데이터베이스 의 이름입니다.

반환합니다:

  • (string)

    name 데이터베이스 의 이름입니다.

이후:

  • 2.0.0



64
65
66
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 64

def 이름
  @name
end

#options해시 (읽기 전용)

반환값 options options.

반환합니다:

  • (해시)

    options 옵션입니다.

이후:

  • 2.0.0



67
68
69
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 67

def 옵션
  @options
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true, false

데이터베이스 객체 가 다른 객체와 동일한지 확인합니다. 이름이 동일한지 간단히 확인합니다.

예시:

데이터베이스 동등성을 확인합니다.

database == other

매개변수:

  • 기타 (객체)

    확인할 객체입니다.

반환합니다:

  • (true, false)

    객체가 동일한 경우.

이후:

  • 2.0.0



94
95
96
97
98
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 94

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?(Database)

  이름 == 기타.이름
end

#[](collection_name, options = {}) ⇒ Mongo::Collection ~ 라고도 함: 컬렉션

제공된 이름으로 이 데이터베이스 에서 컬렉션 을 가져옵니다.

예시:

컬렉션 을 가져옵니다.

database[:users]

매개변수:

  • collection_name (string, 기호)

    컬렉션의 이름입니다.

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

    컬렉션에 대한 옵션입니다.

반환합니다:

이후:

  • 2.0.0



111
112
113
114
115
116
117
118
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 111

def [](collection_name, 옵션 = {})
  만약 옵션[:server_api]
    올리다 ArgumentError,
          ':server_api 옵션은 컬렉션 객체에 지정할 수 없습니다. 클라이언트 수준'
  end

  컬렉션.신규(self, collection_name, 옵션)
end

#aggregate(pipeline, options = {}) ⇒ Collection::View::Aggregation

데이터베이스 에서 집계 을 수행합니다.

예시:

집계 을 수행합니다.

collection.aggregate([ { "$listLocalSessions" => {} } ])

매개변수:

  • 파이프라인 (Array<Hash>)

    집계 파이프라인.

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

    애그리게이션 옵션.

옵션 해시(options):

  • :allow_disk_use (true, false)

    애그리게이션 중에 디스크 사용이 허용되는 경우 true로 설정합니다.

  • :batch_size (정수)

    배치당 반환할 문서 수입니다.

  • :bypass_document_validation (true, false)

    문서 수준 유효성 검사 를 건너뛸지 여부입니다.

  • :collation (해시)

    사용할 데이터 정렬입니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :max_time_ms (정수)

    쿼리 실행 허용하는 최대 시간(밀리초)입니다. 이 옵션은 더 이상 사용되지 않으므로 대신 :timeout_ms를 사용하세요.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

  • :hint (string)

    집계에 사용할 인덱스입니다.

  • :session (세션)

    사용할 세션입니다.

반환합니다:

이후:

  • 2.10.0



568
569
570
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 568

def 집계(파이프라인, 옵션 = {})
  보기.신규(self, 옵션).집계(파이프라인, 옵션)
end

#clusterMongo::Server

반환값 클러스터 에서 프라이머리 서버 를 가져옵니다.

반환합니다:

  • (Mongo::Server)

    클러스터 에서 프라이머리 서버 를 가져옵니다.

이후:

  • 2.0.0



80
81
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 80

def_delegators :cluster,
:next_primary

#collection_names(options = {}) ⇒ Array<String>

참고:

반환되는 컬렉션 이름 집합은 요청을 처리하는 MongoDB 서버의 버전에 따라 달라집니다.

데이터베이스 에 있는 비시스템 컬렉션의 모든 이름을 가져옵니다.

See https://mongodb.com/ko-kr/docs/manual/reference/command/listCollections/
for more information and usage.

매개변수:

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

옵션 해시(options):

  • :filter (해시)

    반환된 컬렉션에 대한 필터입니다.

  • :authorized_collections (true, false)

    true로 설정하다 하고 nameOnly: true와 함께 사용하면 액세스 제어가 시행될 때 필요한 권한 이 없는 사용자도 명령을 실행 수 있는 플래그입니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

반환합니다:

  • (Array<String>)

    컬렉션의 이름입니다.

이후:

  • 2.0.0



145
146
147
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 145

def collection_names(옵션 = {})
  보기.신규(self, 옵션).collection_names(옵션)
end

collection #collection(options = {}) ⇒ Array<Mongo::Collection>

참고:

반환되는 컬렉션 설정하다 는 요청 을 처리하는 MongoDB 서버 의 버전에 따라 달라집니다.

이 데이터베이스 에 속하는 모든 비시스템 컬렉션을 가져옵니다.

See https://mongodb.com/ko-kr/docs/manual/reference/command/listCollections/
for more information and usage.

매개변수:

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

옵션 해시(options):

  • :filter (해시)

    반환된 컬렉션에 대한 필터입니다.

  • :authorized_collections (true, false)

    true로 설정하다 하고 name_only: true와 함께 사용하면 액세스 제어가 시행될 때 필요한 권한 이 없는 사용자도 명령을 실행 수 있는 플래그입니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

반환합니다:

이후:

  • 2.0.0



206
207
208
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 206

def collections(옵션 = {})
  collection_names(옵션).map { |이름| 컬렉션(이름) }
end

#command(operation, opts = {}) ⇒ Mongo::Operation::Result

데이터베이스에서 명령을 실행합니다.

예시:

명령을 실행합니다.

database.command(:hello => 1)

매개변수:

  • 작업 (해시)

    실행할 명령입니다.

  • opts (해시) (기본값: {})

    명령 옵션.

  • 옵션 (해시)

    사용자 지정 가능한 옵션 세트

옵션 해시(opts):

  • :read (해시)

    이 명령에 대한 읽기 설정 (read preference) 입니다.

  • :session (세션)

    이 명령에 사용할 세션입니다.

  • :execution_options (해시)

    이 명령을 실행하는 코드에 전달할 옵션입니다. 이는 내부 옵션이며 변경될 수 있습니다.

    • :deserialize_as_bson [ Boolean ] 가능한 경우 네이티브 Ruby 유형 대신 BSON 유형을 사용하여 이 명령에 대한 응답을 역직렬화할지 여부입니다.

반환합니다:

이후:

  • 2.0.0



232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 232

def 명령(작업, opts = {})
  opts = opts.dup
  execution_opts = opts.삭제(:execution_options) || {}

  txn_read_pref = (opts[:session].txn_read_preference 만약 opts[:session] && opts[:session].in_transaction?)
  txn_read_pref ||= opts[:read] || ServerSelector::기본
  Lint.validate_underscore_read_preference(txn_read_pref)
  선택기 = ServerSelector.get(txn_read_pref)

  고객.with_session(opts) do |Session|
    컨텍스트 = 작업::Context.신규(
      클라이언트: 고객,
      세션: Session,
      operation_timeout: operation_timeout(opts)
    )
    op = 작업::명령.신규(
      선택기: 작업,
      db_name: 이름,
      읽기: 선택기,
      세션: Session
    )

    retry_enabled = 고객.옵션[:retry_reads] != 거짓 &&
                    고객.옵션[:retry_writes] != 거짓
    with_overload_retry(컨텍스트: 컨텍스트, retry_enabled: retry_enabled) do
      서버 = 선택기.select_server(cluster, nil, Session)
      op.실행(서버, 컨텍스트: 컨텍스트, 옵션: execution_opts)
    end
  end
end

#커서_command(command, options = {}) ⇒ Mongo::커서

커서를 반환하는 명령을 실행하고 응답을 커서로 구문 분석합니다.

명령은 수정되지 않고 서버로 전송됩니다. 드라이버는 이를 검사하거나 변경해서는 안 됩니다. 응답에 커서 필드가 포함되어 있지 않으면 오류가 발생합니다. 명령은 재시도되지 않습니다.

주: maxTimeMS 필드가 이미 명령 문서에 설정되어 있는 경우 그대로 납두어집니다. 아래의 max_time_ms 옵션은 getMore 명령에만 적용됩니다. timeout_msmax_time_ms 을 모두 설정하는 것은 지원되지 않으며 작동이 정의되지 않습니다.

예시:

커서 반환 명령을 실행합니다.

database.cursor_command(checkMetadataConsistency: 1)

매개변수:

  • 명령 (해시)

    실행할 명령입니다.

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

    명령 옵션.

옵션 해시(options):

  • :read (해시)

    서버 선택에 사용되고 이오 후속 getMore에 재사용되는 이 명령의 읽기 설정(read preference)입니다.

  • :session (세션)

    사용할 세션입니다. 아무 것도 주어지지 않으면 암시적 세션이 생성되어 커서의 수명 동안 재사용됩니다.

  • :timeout_ms (정수)

    작업 시간 초과(밀리초)입니다.

  • :batch_size (정수)

    getMore 명령에 대해 전송할 batchSize입니다.

  • :max_time_ms (정수)

    getMore 명령에 전송할 maxTimeMS입니다.

  • :comment (객체)

    getMore 명령에 추가할 주석.

  • :cursor_type (기호)

    커서 유형: tailable 또는 tailable_await. 명령 문서에 설정된 플래그와 일치해야 합니다.

  • :timeout_mode (기호)

    :cursor_lifetime 또는 :iteration.

반환합니다:

다음을 발생시킵니다.

이후:

  • 2.0.0



301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 301

def cursor_command(명령, 옵션 = {})
  옵션 = 옵션.dup
  execution_opts = 옵션.삭제(:execution_options) || {}
  view_options = extract_cursor_command_view_options(옵션)

  txn_read_pref = (옵션[:session].txn_read_preference 만약 옵션[:session] && 옵션[:session].in_transaction?)
  txn_read_pref ||= 옵션[:read] || ServerSelector::기본
  Lint.validate_underscore_read_preference(txn_read_pref)
  선택기 = ServerSelector.get(txn_read_pref)

  # 세션은 의도적으로 #with_session에 래핑되지 않습니다. 임시적
  # 세션은 이 메서드보다 오래 유지되며 커서에 의해 종료됩니다.
  # 소매되거나 닫히지는 경우. 커서가 소유권을 가지기 전까지는 세션과
  # 모든 종료 경로에서 여기서 모든 부하 밸런싱 연결이 정리됩니다.
  Session = 고객.get_session(옵션)
  컨텍스트 = 작업::Context.신규(
    클라이언트: 고객,
    세션: Session,
    operation_timeout: operation_timeout(옵션)
  )
  op = 작업::CursorCommand.신규(
    선택기: 명령,
    db_name: 이름,
    읽기: 선택기,
    세션: Session
  )

  # 클라이언트 백프레쉘 사양에 따라 일반 명령을 다시 시도합니다.
  # 오버로드 오류에는 재시도 읽기 및 쓰기 (write)가 모두 필요합니다.
  # 사용함, 데이터베이스 명령과 동일합니다.
  retry_enabled = 고객.옵션[:retry_reads] != 거짓 &&
                  고객.옵션[:retry_writes] != 거짓

  서버 = nil
  연결 = nil
  cursor = nil
  시작
    결과 = with_overload_retry(컨텍스트: 컨텍스트, retry_enabled: retry_enabled) do
      서버 = 선택기.select_server(cluster, nil, Session)
      만약 서버.load_balancer?
        # 연결은 비워질 때 커서 에 의해 체크인됩니다.
        연결 = check_out_cursor_command_connection(서버, 컨텍스트)
        시작
          op.execution_with_connection(연결, 컨텍스트: 컨텍스트, 옵션: execution_opts)
        구출 StandardError
          # 오류가 전파되기 전에 연결을 해제하여
          # 재시도는 새로운 시도를 확인합니다.
          연결.connection_pool.check_in(연결) 하지 않는 한 연결.고정?
          연결 = nil
          올리다
        end
      other
        op.실행(서버, 컨텍스트: 컨텍스트, 옵션: execution_opts)
      end
    end

    하지 않는 한 결과.cursor?
      올리다 오류::InvalidCursorOperation,
            '명령 응답에 커서가 포함되지 않았습니다. ' \
            '커서를 반환하지 않는 명령에 대해 데이터베이스 명령을 사용합니다.'
    end

    view = CursorCommandView.new(self, view_options)
    커서 = 커서.new(view, result, 서버, session: session, context: context)
  ensure
    # 커서가 생성된 경우 세션과 연결을 소유합니다.
    # 그렇지 않은 경우 (오류 또는 응답에 커서가 없는 경우) 여기서 해제합니다.
    unless 커서
      connection.connection_pool.check_in(connection) if connection && !connection.pinned?
      session.end_session if session && session.implicit?
    end
  end
  커서
end

#drop(options = {}) ⇒ Result

데이터베이스 와 모든 관련 정보를 삭제합니다.

예시:

데이터베이스를 제거합니다.

database.drop

매개변수:

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

    작업에 대한 옵션입니다.

옵션 해시(options):

  • :session (세션)

    작업에 사용할 세션입니다.

  • :write_concern (해시)

    쓰기 고려 (write concern) 옵션.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

반환합니다:

  • (결과)

    명령의 결과입니다.

이후:

  • 2.0.0



439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 439

def 제거(옵션 = {})
  작업 = { dropDatabase: 1 }
  고객.with_session(옵션) do |Session|
    write_concern = 만약 옵션[:write_concern]
                      writeConcern.get(옵션[:write_concern])
                    other
                      self.write_concern
                    end
    작업::데이터베이스 삭제.신규({
                                  선택기: 작업,
                                  db_name: 이름,
                                  write_concern: write_concern,
                                  세션: Session
                                }).실행(
                                  Next_primary(nil, Session),
                                  컨텍스트: 작업::Context.신규(
                                    클라이언트: 고객,
                                    세션: Session,
                                    operation_timeout: operation_timeout(옵션)
                                  )
                                )
  end
end

#fs(options = {}) ⇒ Grid::FSBucket

이 데이터베이스 에 대한 그리드 '파일 시스템'을 가져옵니다.

매개변수:

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

    GridFS 옵션.

옵션 해시(options):

  • :bucket_name (string)

    파일 및 청크 컬렉션의 접두사입니다.

  • :chunk_size (정수)

    기본값 청크 크기를 재정의합니다.

  • :fs_name (string)

    파일 및 청크 컬렉션의 접두사입니다.

  • :read (string)

    읽기 설정 (read preference).

  • :session (세션)

    사용할 세션입니다.

  • :write (해시)

    더 이상 사용되지 않습니다. :write_concern 옵션과 동일합니다.

  • :write_concern (해시)

    쓰기 고려 (write concern) 옵션. :w => Integer|String, : fsync => Boolean, :j => Boolean일 수 있습니다.

반환합니다:

이후:

  • 2.0.0



522
523
524
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 522

def fs(옵션 = {})
  그리드::FSBucket.신규(self, 옵션)
end

#검사string

데이터베이스에 대한 예쁜 인쇄된 string 검사를 받으세요.

예시:

데이터베이스 를 검사합니다.

database.inspect

반환합니다:

  • (string)

    데이터베이스 검사.

이후:

  • 2.0.0



498
499
500
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 498

def 검사
  "#<Mongo::Database:0x#{object_id} name=#{name}>"
end

#list_collections(options = {}) ⇒ Array<Hash>

참고:

반환되는 컬렉션 집합과 컬렉션당 정보 해시의 스키마는 요청을 처리하는 MongoDB 서버 버전에 따라 다릅니다.

데이터베이스의 모든 비시스템 컬렉션에 대한 정보를 가져옵니다.

See https://mongodb.com/ko-kr/docs/manual/reference/command/listCollections/
for more information and usage.

매개변수:

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

옵션 해시(options):

  • :filter (해시)

    반환된 컬렉션에 대한 필터입니다.

  • :name_only (true, false)

    명령이 컬렉션/view 이름과 유형만 반환할지, 아니면 이름과 기타 정보를 모두 반환할지 여부를 나타냅니다.

  • :authorized_collections (true, false)

    true로 설정하다 하고 nameOnly: true와 함께 사용하면 액세스 제어가 시행될 때 필요한 권한 이 없는 사용자도 명령을 실행 수 있는 플래그입니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

반환합니다:

  • (Array<Hash>)

    데이터베이스 의 각 컬렉션 당 하나씩 정보 해시의 배열입니다.

이후:

  • 2.0.5



178
179
180
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 178

def list_collections(옵션 = {})
  보기.신규(self, 옵션).list_collections(옵션)
end

#operation_timeouts(opts) ⇒ 해시

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

작업 수준에서 설정하다 timeout_ms 값(있는 경우) 및/또는 컬렉션/ 데이터베이스/ 클라이언트 수준(있는 경우)에 설정하다 timeout_ms를 반환합니다.

반환합니다:

  • (해시)

    작업 수준에서 설정하다 timeout_ms 값(있는 경우) 및/또는 컬렉션/ 데이터베이스/ 클라이언트 수준(있는 경우)에 설정하다 timeout_ms입니다.

이후:

  • 2.0.0



659
660
661
662
663
664
665
666
667
668
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 659

def operation_timeout(opts)
  # TODO: 두 개의 타임아웃이 별도로 필요한지 다시 평가해야 합니다.
  {}. do |결과|
    만약 opts[:timeout_ms].nil?
      결과[:inherited_timeout_ms] = timeout_ms
    other
      결과[:operation_timeout_ms] = opts.삭제(:timeout_ms)
    end
  end
end

#read_command(operation, opts = {}) ⇒ 해시

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

데이터베이스 에서 읽기 명령을 실행하고, 필요한 경우 읽기를 다시 시도합니다.

매개변수:

  • 작업 (해시)

    실행할 명령입니다.

  • opts (해시) (기본값: {})

    명령 옵션.

옵션 해시(opts):

  • :read (해시)

    이 명령에 대한 읽기 설정 (read preference) 입니다.

  • :session (세션)

    이 명령에 사용할 세션입니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :timeout_ms (정수)

    작업 시간 제한(밀리초)입니다. 음수가 아닌 정수여야 합니다. 0 의 명시적 값은 무한대를 의미합니다. 기본값 은 설정되지 않았으며 이는 값이 데이터베이스 또는 클라이언트 에서 상속됨을 의미합니다.

  • :op_name (string | nil)

    추적을 위한 작업의 이름입니다.

반환합니다:

  • (해시)

    명령 실행 결과입니다.

이후:

  • 2.0.0



394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 394

def read_command(작업, opts = {})
  txn_read_pref = (opts[:session].txn_read_preference 만약 opts[:session] && opts[:session].in_transaction?)
  txn_read_pref ||= opts[:read] || ServerSelector::기본
  Lint.validate_underscore_read_preference(txn_read_pref)
  기본 설정 = ServerSelector.get(txn_read_pref)

  고객.with_session(opts) do |Session|
    컨텍스트 = 작업::Context.신규(
      클라이언트: 고객,
      세션: Session,
      operation_timeout: operation_timeout(opts)
    )
    작업 = 작업::명령.신규(
      선택기: 작업.dup,
      db_name: 이름,
      읽기: 기본 설정,
      세션: Session,
      comment: opts[:comment]
    )
    op_name = opts[:op_name] || '명령'
    추적 프로그램.trace_operation(작업, 컨텍스트, op_name: op_name) do
      read_with_retry(Session, 기본 설정, 컨텍스트) do |서버|
        작업.실행(서버, 컨텍스트: 컨텍스트)
      end
    end
  end
end

#timeout_msInteger | nil

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

이 데이터베이스 또는 해당 클라이언트 에 대한 작업 시간 초과를 반환합니다.

반환합니다:

  • (정수 | nil)

    이 데이터베이스 또는 해당 클라이언트 에 대한 작업 시간 초과입니다.

이후:

  • 2.0.0



651
652
653
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 651

def timeout_ms
  옵션[:timeout_ms] || 고객.timeout_ms
end

#usersView::User

이 데이터베이스 에 대한 사용자 뷰를 가져옵니다.

예시:

사용자 뷰를 가져옵니다.

database.users

반환합니다:

  • (View::User)

    사용자 보기.

이후:

  • 2.0.0



534
535
536
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 534

def 사용자
  인증::사용자::보기.신규(self)
end

#watch(파이프라인 = [], options = {}) ⇒ ChangeStream

참고:

변경 스트림 '대다수' 읽기 고려 (read concern) 만 허용합니다.

참고:

재개 가능성을 지원할 목적으로 $changeStream 단계로 원시 애그리게이션을 실행하는 것보다 이 헬퍼 메서드를 사용하는 것이 좋습니다.

사용자가 클라이언트의 데이터베이스 에서 발생하는 모든 변경사항에 대해 알림 보내도록 요청 수 있습니다.

예시:

특정 데이터베이스 에 대한 변경 알림 받기 ..

database.watch([{ '$match' => { operationType: { '$in' => ['insert', 'replace'] } } }])

매개변수:

  • 파이프라인 (Array<Hash>) (기본값: [])

    선택적 추가 필터 연산자.

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

    변경 스트림 옵션.

옵션 해시(options):

  • :full_document (string)

    허용되는 값: nil, '기본값', 'updateLookup', 'whenAvailable', 'required'.

    기본값 값을 전송하지 않는 것입니다(예: nil), ' 기본값'와 동일합니다. 기본값 으로 부분 업데이트에 대한 변경 알림에는 문서 의 변경 사항을 설명하는 델타가 포함됩니다.

    'updateLookup'으로 설정하다 하면 부분 업데이트에 대한 변경 알림에 문서 의 변경 사항을 설명하는 델타와 변경 발생 후 일정 기간 동안 변경된 전체 문서 의 사본이 모두 포함됩니다.

    'whenAvailable'로 설정하다 하면 이 이벤트 에 대한 사후 이미지를 사용할 수 있는 경우 교체 및 업데이트 변경 이벤트에 대해 수정된 문서 의 사후 이미지를 반환하도록 변경 스트림 구성합니다.

    '필수'로 설정하다 하면 사후 이미지를 사용할 수 없는 경우 오류가 발생한다는 점을 제외하면 'whenAvailable'과 동작이 동일합니다.

  • :full_document_before_change (string)

    허용되는 값: nil, 'whenAvailable', 'required', 'off'.

    기본값 값을 전송하지 않는 것입니다(예: nil)은 'off'와 동일합니다.

    'whenAvailable'로 설정하다 하면 교체, 업데이트 및 삭제 변경 이벤트(사용 가능한 경우)에 대해 수정된 문서 의 사전 이미지를 반환하도록 변경 스트림 구성합니다.

    '필수'로 설정하다 하면, 사전 이미지를 사용할 수 없는 경우 오류가 발생한다는 점을 제외하면 'whenAvailable'과 동작이 동일합니다.

  • :resume_after (BSON::Document, Hash)

    새 변경 스트림의 논리적 시작점을 지정합니다.

  • :max_await_time_ms (정수)

    서버가 변경 스트림 쿼리를 충족하기 위해 새 문서를 기다리는 최대 시간입니다.

  • :batch_size (정수)

    배치당 반환할 문서 수입니다.

  • :collation (BSON::Document, Hash)

    사용할 데이터 정렬입니다.

  • :session (세션)

    사용할 세션입니다.

  • :start_at_operation_time (BSON::Timestamp)

    지정된 타임스탬프 이후에 발생한 변경 사항만 반환합니다. 서버 대해 명령을 실행 여기에서 사용할 수 있는 클러스터 시간이 반환됩니다.

  • :comment (객체)

    이 명령에 첨부할 사용자 제공 코멘트입니다.

  • :show_expanded_events (부울)

    서버 변경 스트림 이벤트의 '확장' 목록을 보낼 수 있도록 합니다. 이 플래그 설정하다 에 포함된 추가 이벤트 목록은 createIndexes, dropIndexes, Modify, create, shardCollection, reshardCollection, refineCollectionShardKey입니다.

반환합니다:

  • (ChangeStream)

    변경 스트림 객체입니다.

이후:

  • 2.6.0



635
636
637
638
639
640
641
642
643
644
645
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 635

def 시계(파이프라인 = [], 옵션 = {})
  view_options = 옵션.dup
  view_options[:cursor_type] = :tailable_await 만약 옵션[:max_await_time_ms]

  mongo::컬렉션::보기::Change Stream.신규(
    mongo::컬렉션::보기.신규(컬렉션("#{명령}.aggregate"), {}, view_options),
    파이프라인,
    mongo::컬렉션::보기::Change Stream::데이터베이스,
    옵션
  )
end