클래스: Mongo::Client

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
로깅 가능
다음에 정의됨:
build/ruby-driver-v2.19/lib/mongo/client.rb

개요

클라이언트는 드라이버의 진입점이며 상호 작용할 기본 객체입니다.

이후:

  • 2.0.0

상수 요약 접기

CRUD_OPTIONS =

cluster 및 해당 하위 구성 요소의 동작에 영향을 주지 않는 옵션입니다.

이후:

  • 2.1.0

[
  :auto_encryption_options,
  :database,
  :read, :read_concern,
  :write, :write_concern,
  :retry_reads, :max_read_retries, :read_retry_interval,
  :retry_writes, :max_write_retries,

  # 현재 여기에 있을 수 없는 옵션:
  #
  # :server_selection_timeout
  # MongoDB Server 선택 시간 제한은 클러스터 생성자가 다음을 파악하는 데 사용됩니다.
  # 호환 모드에서 초기 스캔을 기다리는 시간(단, 한 번)
  # 클러스터가 초기화되면 더 이상 이 제한 시간을 사용하지 않습니다.
  # 유감스럽게도 서버 선택기는 서버 선택 시간 초과를 읽습니다.
  # 클러스터이며 이 동작은 Cluster#next_primary에 필요합니다.
  # 인수를 받지 않습니다. Next_primary가 제거되면 다시 살펴볼 수 있습니다.
  # 서버 선택 시간 초과가 다른 동일한 클러스터 객체를 사용합니다.
].동결
VALID_OPTIONS =

유효한 클라이언트 옵션입니다.

이후:

  • 2.1.2

[
  :app_name,
  :auth_mech,
  :auth_mech_properties,
  :auth_source,
  :auto_encryption_options,
  :bg_error_backtrace,
  :cleanup,
  :compressors,
  :direct_connection,
  :connect,
  :connect_timeout,
  :database,
  :하트비트_빈도,
  :id_generator,
  :load_balancing,
  :local_threshold,
  :logger,
  :log_prefix,
  :max_idle_time,
  :max_pool_size,
  :max_read_retries,
  :max_write_retries,
  :min_pool_size,
  :monitoring,
  :monitoring_io,
  :password,
  :platform,
  :populator_io,
  :read,
  :read_concern,
  :read_retry_interval,
  :replica_set,
  :resolv_options,
  :retry_reads,
  :retry_writes,
  :scan,
  :sdam_proc,
  :server_api,
  :server_selection_timeout,
  :socket_timeout,
  :srv_max_hosts,
  :srv_service_name,
  :ssl,
  :ssl_ca_cert,
  :ssl_ca_cert_object,
  :ssl_ca_cert_string,
  :ssl_cert,
  :ssl_cert_object,
  :ssl_cert_string,
  :ssl_key,
  :ssl_key_object,
  :ssl_key_pass_phrase,
  :ssl_key_string,
  :ssl_verify,
  :ssl_verify_certificate,
  :ssl_verify_hostname,
  :ssl_verify_ocsp_endpoint,
  :truncate_logs,
  : user,
  :wait_queue_timeout,
  :wrapping_libraries,
  :write,
  :write_concern,
  :zlib_compression_level,
].동결
VALID_COMPRESSORS =

드라이버에서 지원하는 압축 알고리즘입니다.

이후:

  • 2.5.0

[
  mongo::protocol::압축::zstd,
  mongo::protocol::압축::스내피,
  mongo::protocol::압축::zlib
].동결
VALID_SERVER_API_VERSIONS =

알려진 서버 API 버전.

이후:

  • 2.0.0

%w(
  1
).동결

Loggable에서 포함된 상수

Loggable::prefix

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

Loggable에 포함된 메서드

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

생성자 세부 정보

#initialize(addresses_or_uri, options = nil) ⇒ 클라이언트

새 드라이버 클라이언트를 인스턴스화합니다.

예시:

단일 서버 또는 mongos 클라이언트를 인스턴스화합니다.

Mongo::Client.new(['127.0.0.1:27017'])

복제본 세트에 대한 클라이언트를 인스턴스화합니다.

Mongo::Client.new(['127.0.0.1:27017', '127.0.0.1:27021'])

복제본 세트의 mongod에 직접 연결

Mongo::Client.new(['127.0.0.1:27017'], :connect => :direct)
# without `:connect => :direct`, Mongo::Client will discover and
# connect to the replica set if given the address of a server in
# a replica set

매개변수:

  • address_or_uri (Array<string> | string)

    host:port 또는 MongoDB URI 연결 string 형식의 서버 주소 배열입니다.

  • 옵션 (해시) (기본값: nil)

    클라이언트 에서 사용할 옵션입니다. MongoDB URI 연결 string 도 제공되는 경우 이러한 옵션은 URI string 에 있는 유사한 옵션보다 우선합니다.

옵션 해시(options):

  • :app_name (string, 기호)

    3.4 이상 서버 버전에서 연결 설정 시 mongod 로그에 출력되는 애플리케이션 이름입니다.

  • :auth_mech (기호)

    사용할 인증 메커니즘입니다. 다음 중509 256 .

  • :auth_mech_properties (해시)
  • :auth_source (string)

    인증할 소스입니다.

  • :bg_error_backtrace (true | false | nil | Integer)

    실험적입니다. 백그라운드 스레드의 오류에 대한 전체 역추적을 기록하려면 true로 설정합니다. 역추적을 기록하지 않으려면 false 또는 nil로 설정합니다. 그만큼 많은 역추적 라인을 기록하려면 양의 정수를 입력하세요.

  • :compressors (Array<String>)

    사용할 수 있는 잠재적 압축기 목록을 선호도 순으로 나열한 것입니다. 드라이버는 서버에서도 지원되는 첫 번째 압축기를 선택합니다. 현재 드라이버는 'zstd, 'snappy' 및 'zlib'만 지원합니다.

  • :direct_connection (true | false)

    토폴로지 검색을 우회하여 지정된 시드에 직접 연결할지 여부입니다. 정확히 하나의 시드를 제공해야 합니다.

  • :connect (기호)

    더 이상 사용되지 않음 - 이 옵션 대신 :direct_connection 옵션을 사용합니다. 사용할 연결 메서드입니다. 이렇게 하면 클러스터가 자동 검색 대신 지정된 방식으로 작동합니다. :direct, :replica_set, :sharded, :load_balancing 중 하나입니다. :connect를 :load_balancing으로 설정하면 드라이버는 로드 밸런서에 연결되어 있지 않더라도 서버가 로드 밸런서인 것처럼 작동합니다.

  • :connect_timeout (Float)

    연결 시도에 대한 제한 시간(초)입니다.

  • :database (string)

    연결할 데이터베이스입니다.

  • :하트비트_빈도 (Float)

    서버 모니터가 hello를 통해 설명을 새로 고치는 간격(초)입니다.

  • :id_generator (객체)

    문서의 ID를 생성하는 사용자 지정 객체입니다. #generate에 응답해야 합니다.

  • :load_balancing (true | false)

    로드 밸런서에 연결할지 여부입니다.

  • :local_threshold (정수)

    작업을 위해 가까운 서버를 선택하기 위한 로컬 임계값 경계(초)입니다.

  • :logger (로거)

    사용할 사용자 지정 로거입니다.

  • :log_prefix (string)

    로깅 시 사용할 사용자 지정 로그 접두사입니다. 이 옵션은 실험적 기능이며 향후 운전자 버전에서 변경될 수 있습니다.

  • :max_idle_time (정수)

    소켓이 풀에 체크인된 이후 유휴 상태로 유지될 수 있는 최대 시간(초)입니다.

  • :max_pool_size (정수)

    연결 풀의 최대 크기입니다. 이 옵션을 0으로 설정하면 무제한 연결 풀이 생성됩니다.

  • :max_read_retries (정수)

    레거시 읽기 재시도가 사용 중인 경우 최대 읽기 재시도 횟수입니다.

  • :max_write_retries (정수)

    레거시 쓰기 (write) 재시도가 사용 중일 때 쓰기 (write) 재시도의 최대 횟수입니다.

  • :min_pool_size (정수)

    연결 풀 의 최소 크기입니다.

  • :monitoring (true, false)

    false를 지정하면 클라이언트는 글로벌 SDAM 이벤트 구독자 없이 초기화되며 SDAM 이벤트를 게시하지 않습니다. 명령 모니터링 및 레거시 이벤트는 계속 게시되며 드라이버는 서버 선택을 수행하기 위해 SDAM을 수행하고 해당 클러스터를 모니터링합니다. SDAM 이벤트의 기본 제공 드라이버 로깅은 SDAM 이벤트 구독을 통해 구현되므로 비활성화됩니다. Client#subscribe는 모든 이벤트 유형에 대해 성공하지만 SDAM 이벤트의 구독자는 호출되지 않습니다. false 이외의 값은 정상적인 SDAM 이벤트 게시를 수행하는 기본 동작을 초래합니다.

  • :monitoring_io (true, false)

    내부 드라이버 전용입니다. 이 클라이언트 또는 그 하위 서버에서 SDAM 관련 I/O를 수행하지 않으려면 false로 설정합니다. 참고: 이 옵션을 false로 설정하면 클라이언트가 작동하지 않습니다. SDAM 상태 전환을 수동으로 호출하는 테스트에 사용하기 위한 것입니다.

  • :cleanup (true | false)

    내부 드라이버 전용입니다. 클러스터 연결이 끊어졌을 때 서버 세션을 정리하기 위해 endSessions 명령이 서버로 전송되지 않도록 하고 주기적 실행기를 시작하지 않으려면 false로 설정합니다. :monitoring_io가 false인 경우 :cleanup도 자동으로 false로 기본 설정됩니다.

  • :password (string)

    사용자의 비밀번호입니다.

  • :platform (string)

    서버 버전 3.4 이상에서 연결 설정 시 mongod 로그에 출력되는 메타데이터에 포함할 플랫폼 정보입니다.

  • :read (해시)

    읽기 설정 옵션. 해시에는 다음과 같은 항목이 있을 수 있습니다.

    • : 모드 - 기호로 지정된 읽기 설정 (read preference) . 유효한 값은 프라이머리, :primary_preferred, : 세컨더리, :secondary_preferred:nearest 입니다.

    • :tag_sets - 해시 배열입니다.

    • :local_threshold.

  • :read_concern (해시)

    읽기 고려 옵션.

  • :read_retry_interval (Float)

    mongos에서 읽기를 재시도하는 간격(초)입니다.

  • :replica_set (기호)

    연결할 복제본 세트의 이름입니다. 이 복제본 세트에 없는 서버는 무시됩니다.

  • :retry_reads (true | false)

    true이면 최신 재시도 가능 읽기가 활성화됩니다(기본값). false인 경우 최신 재시도 가능 읽기가 비활성화되고 레거시 재시도 가능 읽기가 활성화됩니다.

  • :retry_writes (true | false)

    복제본 세트 또는 샤딩된 클러스터 버전 3.6 이상에 연결된 경우 쓰기를 한 번 재시도합니다. (기본값은 true입니다.)

  • :scan (true | false)

    생성자의 모든 시드를 스캔할지 여부입니다. 드라이버 버전 2.x의 기본값은 이렇게 하는 것입니다. 드라이버 버전 3.x는 생성자에서 시드를 스캔하지 않습니다. 이 옵션을 false로 설정하여 새 동작을 사용하도록 선택합니다. 참고: 이 옵션을 nil로 설정하면 드라이버 버전 2.x의 생성자에서 시드를 스캔할 수 있습니다. 드라이버 버전 3.x는 이 옵션을 인식하지만 무시하며 생성자에서 시드를 스캔하지 않습니다.

  • :sdam_proc (Proc)

    서버 검색 및 모니터링을 수행하기 전에 클라이언트를 인수로 사용하여 호출할 Proc입니다. 이를 사용하여 클라이언트 구성 중에 게시된 이벤트를 수신하도록 SDAM 이벤트 리스너를 설정합니다.

    참고: sdam_proc이 호출될 때 클라이언트가 완전히 구성되지 않았으며, 특히 현재로서는 클러스터가 nil입니다. sdam_proc은 클라이언트에서만 #subscribe 및 #unsubscribe 메서드를 호출하도록 제한해야 합니다.

  • :server_api (해시)

    요청된 서버 API 버전입니다. 이 해시에는 다음 항목이 포함될 수 있습니다.

    • :version - string

    • :strict - 부울

    • :deprecation_errors - 부울

  • :server_selection_timeout (정수)

    작업을 위한 서버 선택 시간 제한(초)입니다.

  • :socket_timeout (Float)

    소켓에서 작업을 실행할 시간 제한(초)입니다.

  • :srv_max_hosts (정수)

    운전자 가 샤드 토폴로지를 위해 통신할 샤딩된 의 최대 개수입니다. 이 옵션이 0 인 경우 최대 mongoses 수에는 제한이 없습니다. 주어진 URI가 ':srv_max_hosts'보다 많은 호스트로 확인되는 경우, 클라이언트 는 무작위로 ':srv_max_hosts' 크기의 호스트 하위 집합을 선택합니다.

  • :srv_service_name (string)

    SRV DNS 쿼리에 사용할 서비스 이름입니다.

  • :ssl (true, false)

    TLS 사용 여부입니다.

  • :ssl_ca_cert (string)

    연결의 다른 쪽 끝에서 전달된 인증서의 유효성을 검사하는 데 사용되는 연결된 인증 기관 인증서가 포함된 파일입니다. 이 옵션에서 참조하는 파일에 중간 인증서를 지정해서는 안 됩니다. :ssl_verify를 사용할 때는 :ssl_ca_cert, :ssl_ca_cert_string 또는 :ssl_ca_cert_object(우선 순위 순) 중 하나가 필요합니다.

  • :ssl_ca_cert_object (Array<OpenSSL::X509::Certificate>)

    연결의 다른 쪽 끝에서 전달된 인증서의 유효성을 검사하는 데 사용되는 인증 기관 인증서를 나타내는 OpenSSL::X509::Certificate 객체의 배열입니다. 이 옵션에서 참조하는 파일에 중간 인증서를 지정해서는 안 됩니다. :ssl_verify를 사용할 때는 :ssl_ca_cert, :ssl_ca_cert_string 또는 :ssl_ca_cert_object(우선 순위 순) 중 하나가 필요합니다.

  • :ssl_ca_cert_string (string)

    연결의 다른 쪽 끝에서 전달된 인증서의 유효성을 검사하는 데 사용되는 인증 기관 인증서가 포함된 string 입니다. 이 옵션을 사용하면 드라이버에 하나의 CA 인증서만 전달할 수 있습니다. 이 옵션에서 참조하는 파일에 중간 인증서를 지정해서는 안 됩니다. :ssl_verify를 사용할 때는 :ssl_ca_cert, :ssl_ca_cert_string 또는 :ssl_ca_cert_object(우선 순위 순) 중 하나가 필요합니다.

  • :ssl_cert (string)

    MongoDB에 대한 연결을 식별하는 데 사용되는 인증서 파일입니다. 클라이언트 인증서를 먼저 지정한 다음 중간 인증서를 CA 인증서까지 지정하여 인증서 체인을 전달할 수 있습니다. 파일에는 인증서의 개인 키가 포함될 수도 있으며, 이는 무시됩니다. 이 옵션이 있는 경우 이 옵션은 :ssl_cert_string 및 :ssl_cert_object의 값보다 우선합니다.

  • :ssl_cert_object (OpenSSL::X509::Certificate)

    MongoDB에 대한 연결을 식별하는 데 사용되는 OpenSSL::X509::Certificate입니다. 이 옵션을 통해 전달할 수 있는 인증서는 하나뿐입니다.

  • :ssl_cert_string (string)

    string 에 대한 연결을 식별하는 데 사용되는 PEM 인코딩 인증서가 MongoDB 포함된 입니다. 클라이언트 인증서를 먼저 지정한 다음 중간 인증서를 CA 인증서까지 지정하여 인증서 체인을 전달할 수 있습니다. string 에는 인증서의 비공개 키가 포함될 수도 있으며, 이는 무시됩니다. 이 옵션(있는 경우)은 ssl_cert_object의 값보다 우선합니다.

  • :ssl_key (string)

    MongoDB에 대한 연결을 식별하는 데 사용되는 비공개 키 파일입니다. 키가 인증서와 동일한 파일에 저장되어 있더라도 둘 다 명시적으로 지정해야 합니다. 이 옵션이 있는 경우 이 옵션은 :ssl_key_string 및 :ssl_key_object의 값보다 우선합니다.

  • :ssl_key_object (OpenSSL::PKey)

    MongoDB에 대한 연결을 식별하는 데 사용되는 비공개 키입니다.

  • :ssl_key_pass_phrase (string)

    비공개 키의 암호입니다.

  • :ssl_key_string (string)

    string 에 대한 연결을 식별하는 데 사용되는 PEM 인코딩된 비공개 키가 MongoDB 포함된 입니다. 이 매개변수(있는 경우)는 ssl_key_object 옵션의 값보다 우선합니다.

  • :ssl_verify (true, false)

    피어 인증서 유효성 검사 및 호스트 이름 확인을 수행할지 여부입니다. :ssl_verify_certificate가 설정된 경우 인증서 유효성 검사 여부에 대한 결정이 재정의되고, :ssl_verify_hostname이 설정된 경우 호스트 이름의 유효성 검사 여부에 대한 결정이 재정의됩니다.

  • :ssl_verify_certificate (true, false)

    피어 인증서 유효성 검사를 수행할지 여부입니다. 이 설정은 인증서 유효성 검사 수행 여부와 관련하여 :ssl_verify를 재정의합니다.

  • :ssl_verify_hostname (true, false)

    Whether to perform peer hostname validation. 이 설정은 호스트 이름 유효성 검사 수행 여부와 관련하여 :ssl_verify를 재정의합니다.

  • :truncate_logs (true, false)

    로그를 기본값 250자에서 자를지 여부입니다.

  • : user (string)

    사용자 이름입니다.

  • :wait_queue_timeout (Float)

    연결이 체크인될 때까지 연결 풀에서 기다리는 시간(초)입니다.

  • :wrapping_libraries (Array<Hash>)

    추가할 운전자 를 래핑하는 ODM과 같은 라이브러리에 대한 정보입니다.

    metadata sent to the server. Specify the lower level libraries first.
    Allowed hash keys: :name, :version, :platform.
    
  • :write (해시)

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

  • :write_concern (해시)

    쓰기 고려 옵션. :w => Integer|String, :wtimeout => Integer(단위: 밀리초), :j => 부울, :fsync => 부울일 수 있습니다.

  • :zlib_compression_level (정수)

    압축을 사용하는 경우 사용할 zlib 압축 수준입니다. 유효한 레벨은 Ruby의 zlib 모듈을 참조하세요.

  • :resolv_options (해시)

    내부 드라이버 전용입니다. SRV 조회를 위해 Resolve::DNS 생성자에 전달할 옵션입니다.

  • :auto_encryption_options (해시)

    자동 암호화 관련 옵션.

    • :key_vault_client => 클라이언트 | nil, 암호화 키 볼트가 포함된 MongoDB 인스턴스에 연결된 클라이언트

    • :key_vault_namespace => string, database.collection 형식의 키 볼트 네임스페이스

    • :kms_providers => 해시, KMS (KMS) 구성 정보의 해시입니다. 유효한 해시 키는 :aws, :azure, :gcp, :kmip, :local입니다. 지정된 KMS 제공자 가 두 개 이상 있을 수 있습니다.

    • :kms_tls_options => 해시, KMS 제공자에 인증하기 위한 TLS 옵션의 해시로, 일반적으로 KMIP 서버에 사용됩니다. 유효한 해시 키는 :aws, :azure, :gcp, :kmip, :local입니다. 지정된 KMS 제공자 가 두 개 이상 있을 수 있습니다.

    • :schema_map => 해시 | nil, 암호화해야 하는 필드를 지정하는 하나 이상의 컬렉션에 대한 JSONSchema입니다. 이 옵션은 :schema_map_path와 상호 배타적입니다.

      • 참고: schema_map에 제공된 스키마는 클라이언트 사이드 암호화를 위한 자동 암호화 구성에만 적용됩니다. JSON schema의 다른 유효성 검사 규칙은 드라이버에서 적용되지 않으므로 오류가 발생합니다.

      • 참고: schema_map을 제공하면 서버 에서 얻은 JSON Schema에 의존하는 것보다 더 강력한 보안을 제공합니다. 악의적인 서버 가 잘못된 JSON schema 를 광고하여 클라이언트 를 속여 암호화되어야 하는 암호화됨 되지 않은 데이터를 보내도록 할 수 있습니다.

      • 참고: 컬렉션이 :encrypted_fields_map 및 :schema_map 모두에 있는 경우 오류가 발생합니다.

    • :schema_map_path => string | nil 파일 경로에 JSON schema가 포함되어 있습니다.

    자동 암호화됨 문서를 저장하는 컬렉션 의 . 이 옵션은 :schema_map과 상호 배타적입니다.

    • :bypass_auto_encryption => 부울, true이면 자동 암호화를 비활성화합니다. 기본값은 false입니다.

    • :extra_options => 해시 | nil, mongocryptd 생성과 관련된 옵션(API의 이 부분은 변경될 수 있음).

    • :encrypted_fields_map => 해시 | nil은 컬렉션 네임스페이스 를 Queryable Encryption 의 암호화됨 필드를 설명하는 해시에 매핑합니다.

      • 참고: 컬렉션이 암호화된 필드 맵과 schemaMap 모두에 존재하는 경우 오류가 발생합니다.

    • :bypass_query_analysis => 부울 | nil, true인 경우 발신 명령의 자동 분석을 비활성화합니다.

    • :crypt_shared_lib_path => [ string | nil ] crypt 공유 라이브러리를 로드하는 데 사용해야 하는 경로입니다. 이 옵션을 제공하면 libmongocrypt에 대한 기본 암호화 공유 라이브러리 로드 경로가 재정의됩니다.

    • :crypt_shared_lib_required => [ 부울 | nil ] crypt 공유 라이브러리가 필요한지 여부입니다. 'true'인 경우, libmongocrypt가 crypt_shared 라이브러리를 로드할 수 없는 경우 오류가 발생합니다.

    자동 암호화 에 대한 참고 사항:

    • 자동 암호화는 컬렉션의 작업에만 적용되는 엔터프라이즈 전용 기능입니다.

    • 데이터베이스 또는 뷰에 대한 작업에는 자동 암호화 가 지원되지 않습니다.

    • 자동 암호화를 사용하려면 인증된 사용자에게 listCollections 권한이 있어야 합니다.

    • 최악의 경우 자동 암호화 로 인해 클라이언트가 한 번에 사용하는 연결 수가 3배가 될 수 있습니다.

    • 작업에서 자동 암호화가 실패하면 bypass_auto_encryption: true로 구성된 MongoClient를 사용하고 ClientEncryption.encrypt를 사용하여 값을 수동으로 암호화합니다.

    • 클라이언트 측 암호화를 활성화하면 최대 쓰기 배치 크기가 줄어들고 성능에 부정적인 영향을 미칠 수 있습니다.

이후:

  • 2.0.0



489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 489

def 초기화(address_or_uri, 옵션 = nil)
  옵션 = 옵션 ? 옵션.dup : {}

  srv_uri = nil
  만약 address_or_uri.is_a?(::문자열)
    uri = URI.get(address_or_uri, 옵션)
    만약 uri.is_a?(URI::SRVProtocol)
      # URI가 SRV URI인 경우 시작할 수 있도록 이 내용을 기록해 둡니다.
      토폴로지가 샤드 클러스터인 경우 # SRV 폴링.
      srv_uri = uri
    end
    주소 = uri.서버
    uri_options = uri.client_options.dup
    # 특수 처리 : 쓰기 (write) 및 :write_concern: 허용 클라이언트 Ruby
    # options를 사용하여 Ruby 옵션이 다음을 사용하는 경우에도 URI 옵션을 재정의할 수 있습니다.
    # deprecated :write 키 및 URI 옵션은 현재
    # :write_concern 키
    만약 옵션[:write]
      uri_options.삭제(:write_concern)
    end
    옵션 = uri_options.merge(옵션)
    @srv_records = uri.srv_records
  other
    주소 = address_or_uri
    주소. do |addr|
      만약 addr =~ /\Amongodb(\+srv)?:\/\//i
        올리다 ArgumentError, "호스트 '#{addr}'에는 프로토콜 이 포함되지 않아야 합니다. 배열 을 사용하지 않으려는 의도 MEAN ?"
      end
    end

    @srv_records = nil
  end

  옵션 = self.클래스.canonicalize_ruby_options(옵션)

  # 서버 API 버전은 string 로 지정됩니다.
  # 하지만 항상 숫자 1 을(를) string 로 제공하는 것은 매우 성가신 일입니다.
  # 따라서 여기서 string 유형으로 캐스트합니다.
  만약 server_api = 옵션[:server_api]
    만약 server_api.is_a?(해시)
      server_api = 옵션::편집됨.신규(server_api)
      만약 (버전 = server_api[:version]).is_a?(Integer)
        옵션[:server_api] = server_api.merge(버전: 버전.to_s)
      end
    end
  end

  # sdam_proc은 클라이언트 가 실행되는 동안에만 사용되므로 특수 처리됩니다.
  # 구성
  sdam_proc = 옵션.삭제(:sdam_proc)

  # gssapi service_name의 경우 기본 옵션은 해시 값으로 제공됩니다.
  # (최상위 수준에서 한 수준 아래).
  병합된 옵션 = default_options(옵션)
  옵션. do |k, v|
    default_v = 병합된 옵션[k]
    만약 해시 === default_v
      v = default_v.merge(v)
    end
    병합된 옵션[k] = v
  end
  옵션 = 병합된 옵션

  옵션.. do |k|
    만약 옵션[k].nil?
      옵션.삭제(k)
    end
  end

  @options = validate_new_options!(옵션)
=begin WriteConcern 객체 지원
  if @options[:write_concern].is_a?(WriteConcern::Base)
    # 인스턴스를 캐시하여 불필요하게 재구성하지 않도록 합니다.
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=end
  @options.동결
  validate_options!(주소, is_srv: uri.is_a?(URI::SRVProtocol))
  validate_authentication_options!

  database_options = @options.dup
  database_options.삭제(:server_api)
  @database = Database.신규(self, @options[:database], database_options)

  # 이벤트 구독이 완료될 수 있도록 일시적으로 모니터링 을 설정하다 합니다.
  # 클러스터 없이 설정
  @monitoring = 모니터링.신규(@options)

  만약 sdam_proc
    sdam_proc.전화하기.(self)
  end

  @connect_lock = 뮤텍스.신규
  @connect_lock.동기화 do
    @cluster = 클러스터.신규(주소, @monitoring,
      cluster_options.merge(srv_uri: srv_uri))
  end

  시작
    # 모니터링 설정되지 않음, 지금부터 클러스터에서 제거됩니다.
    remove_instance_variable('@monitoring')

    만약 @options[:auto_encryption_options]
      @connect_lock.동기화 do
        build_encrypter
      end
    end

  구출
    시작
      @cluster.닫기
    구출 => e
      log_warn("클라이언트 생성자의 예외 처리기에서 클러스터를 닫는 중 오류가 발생했습니다: #{e.class}: #{e}")
      # 이 예외를 삭제하여 원래 예외가 발생하도록 합니다.
    end
    올리다
  end

  만약 block_given?
    시작
      yield(self)
    보장
      닫기
    end
  end
end

인스턴스 속성 세부 정보

#클러스터Mongo::Cluster (읽기 전용)

반환값 클러스터 클라이언트 에 대한 서버의 클러스터 입니다.

반환합니다:

  • (Mongo::Cluster)

    cluster 클라이언트에 대한 서버의 클러스터입니다.

이후:

  • 2.0.0



137
138
139
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 137

def cluster
  @cluster
end

#databaseMongo::Database (읽기 전용)

반환 데이터베이스 클라이언트가 작동 중인 데이터베이스입니다.

반환합니다:

  • (Mongo::Database)

    database 클라이언트가 작동 중인 데이터베이스입니다.

이후:

  • 2.0.0



140
141
142
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 140

def database
  @database
end

#EncrypterMongo::Crypt::AutoEncrypter (읽기 전용)

자동 암호화 동작을 캡슐화하는 객체를 반환합니다.

반환합니다:

이후:

  • 2.0.0



147
148
149
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 147

def 암호화기
  @encrypter
end

#options해시 (읽기 전용)

반환값 options 구성 옵션입니다.

반환합니다:

  • (해시)

    options 구성 옵션입니다.

이후:

  • 2.0.0



143
144
145
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 143

def 옵션
  @options
end

클래스 메서드 세부 정보

.canonicalize_ruby_options(options) ⇒ 객체

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

지정된 옵션에 인증 메커니즘 속성이 소문자로 지정된 경우 해당 옵션을 Options::Redacted의 인스턴스로 변환합니다.

이후:

  • 2.0.0



1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1161

def canonicalize_ruby_options(옵션)
  옵션::편집됨.신규(해시[옵션.map do |k, v|
    만약 k == :auth_mech_properties || k == 'auth_mech_properties'
      만약 v
        v = 해시[v.map { |pk, pv| [pk.downcase, pv] }]
      end
    end
    [k, v]
  end])
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true, false ~ 라고도 함: eql?

이 클라이언트가 다른 객체와 동일한지 확인합니다.

예시:

클라이언트 동등성을 확인합니다.

client == other

매개변수:

  • 기타 (객체)

    비교할 객체입니다.

반환합니다:

  • (true, false)

    객체가 동일한 경우.

이후:

  • 2.0.0



176
177
178
179
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 176

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?(고객)
  cluster == 기타.cluster && 옵션 == 기타.옵션
end

#[](collection_name, options = {}) ⇒ Mongo::Collection

제공된 컬렉션 이름에 대한 컬렉션 객체 를 가져옵니다.

예시:

컬렉션을 가져옵니다.

client[:users]

매개변수:

  • collection_name (string, 기호)

    컬렉션의 이름입니다.

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

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

반환합니다:

이후:

  • 2.0.0



193
194
195
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 193

def [](collection_name, 옵션 = {})
  database[collection_name, 옵션]
end

#닫기true

모든 연결을 닫습니다.

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.1.0



872
873
874
875
876
877
878
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 872

def 닫기
  @connect_lock.동기화 do
    @closed = true
    do_close
  end
  true
end

#close_encryptertrue

암호화기를 닫고 자동 암호화 리소스를 정리합니다.

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.0.0



883
884
885
886
887
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 883

def close_encrypter
  @encrypter.닫기 만약 @encrypter

  true
end

#닫았나요?부울

반환합니다:

  • (부울)

이후:

  • 2.0.0



863
864
865
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 863

def 닫힘?
  !!@closed
end

#cluster_options객체

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

이후:

  • 2.0.0



618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 618

def cluster_options
  # 새 클라이언트 가 서로 다른 CRUD_OPTIONS를 가진 경우 클러스터를 주식 합니다.
  #이(가) 요청되었습니다. 따라서 클러스터는 다음 중 하나를 얻지 않아야 합니다.
  인스턴스화 시 옵션 #
  옵션.거부 do |, value|
    CRUD_OPTIONS.포함?(.to_sym)
  end.merge(
    # 하지만 인증을 위해 데이터베이스를 다시 넣어야 합니다...
    database: 옵션[:database],

    # 레거시 호환성을 위해 이러한 옵션을 추가하되,
    # 클라이언트와 클러스터의 값이 일치하지 않아도 됩니다.
    # 애플리케이션은 클러스터가 아닌 클라이언트에서 이러한 값을 읽어야 합니다.
    max_read_retries: 옵션[:max_read_retries],
    read_retry_interval: 옵션[:read_retry_interval],
  ). do |옵션|
    # 클라이언트에 클러스터가 이미 있는 경우 srv_uri를 새 클러스터에 전달합니다.
    # 클러스터를 추가하여 SRV 모니터링을 유지 관리합니다. 클라이언트가 신규 고객인 경우,
    # 생성자가 srv_uri를 수동으로 설정합니다.
    만약 cluster
      옵션.update(srv_uri: cluster.옵션[:srv_uri])
    end
  end
end

#database_names(filter = {}, opts = {}) ⇒ Array<String>

모든 데이터베이스의 이름을 가져옵니다.

예시:

데이터베이스 이름을 가져옵니다.

client.database_names

매개변수:

  • 필터 (해시) (기본값: {})

    데이터베이스 목록을 가져오기 위한 필터 기준입니다.

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

    명령 옵션.

  • 옵션 (해시)

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

옵션 해시(opts):

  • :authorized_databases (true, false)

    액세스 제어가 활성화된 경우 사용자 권한에 따라 반환되는 데이터베이스를 결정하는 플래그입니다.

    mongodb.com/ko-kr/docs/manual/reference/command/listDatabases/를 참조하세요. 자세한 내용 및 사용법은 다음을 참조하세요.

  • :session (세션)

    사용할 세션입니다.

반환합니다:

  • (Array<String>)

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

이후:

  • 2.0.5



936
937
938
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 936

def database_names(필터 = {}, opts = {})
  list_databases(필터, true, opts).수집{ |정보| 정보['name'] }
end

#encryption_fields_map해시 | nil

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

클라이언트를 생성할 때 암호화된 필드 맵 해시를 제공한 경우 반환합니다.

반환합니다:

  • (Hash | nil)

    암호화된 필드 맵 해시이거나 설정하다 되지 않은 경우 nil 입니다.

이후:

  • 2.0.0



1177
1178
1179
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1177

def encryption_fields_map
  @encrypted_fields_map ||= @options.가져오기(:auto_encryption_options, {})[:encrypted_fields_map]
end

#get_session(options = {}) ⇒ Session | nil

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

가능한 경우 작업에 사용할 세션을 반환합니다.

:session 옵션이 설정되어 있으면 해당 세션의 유효성을 검사하고 반환합니다. 그렇지 않고 배포에서 세션을 지원하는 경우 새 세션을 만들어 반환합니다. 새 세션이 생성될 때 :implicit 옵션이 제공되면 세션이 암시적(수명 주기는 드라이버에서 관리)이 되고, 그렇지 않으면 세션은 명시적(애플리케이션에서 수명 주기 관리)이 됩니다. 배포에서 세션을 지원하지 않는 경우 nil을 반환합니다.

매개변수:

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

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

옵션 해시(options):

  • :implicit (true | false)

    세션이 전달되지 않은 경우 암시적 세션을 생성할지 여부입니다.

  • :session (세션)

    유효성을 검사하고 반환할 세션입니다.

반환합니다:

  • (Session | nil)

    배포에서 세션을 지원하지 않는 경우 세션 객체 또는 nil입니다.

이후:

  • 2.0.0



1117
1118
1119
1120
1121
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1117

def get_session(옵션 = {})
  get_session!(옵션)
구출 오류::SessionsNotSupported
  nil
end

#해시정수

클라이언트 의 해시 값을 가져옵니다.

예시:

클라이언트 해시 값을 가져옵니다.

client.hash

반환합니다:

  • (정수)

    클라이언트 해시 값입니다.

이후:

  • 2.0.0



205
206
207
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 205

def 해시
  [cluster, 옵션].해시
end

#검사string

클라이언트의 검사를 string 로 가져옵니다.

예시:

클라이언트 를 검사합니다.

client.inspect

반환합니다:

  • (string)

    검사 string.

이후:

  • 2.0.0



681
682
683
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 681

def 검사
  "#<Mongo::Client:0x#{object_id} 클러스터=#{클러스터.요약}>"
end

#list_databases(filter = {}, name_only = false, opts = {}) ⇒ Array<Hash>

각 데이터베이스에 대한 정보를 가져옵니다.

예시:

각 데이터베이스 에 대한 정보를 가져옵니다.

client.list_databases

매개변수:

  • 필터 (해시) (기본값: {})

    데이터베이스 목록을 가져오기 위한 필터 기준입니다.

  • name_only (true, false) (기본값은 false)

    전체 메타데이터 없이 각 데이터베이스 이름만 반환할지 여부입니다.

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

    명령 옵션.

  • 옵션 (해시)

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

옵션 해시(opts):

  • :authorized_databases (true, false)

    액세스 제어가 활성화된 경우 사용자 권한에 따라 반환되는 데이터베이스를 결정하는 플래그입니다.

    mongodb.com/ko-kr/docs/manual/reference/command/listDatabases/를 참조하세요. 자세한 내용 및 사용법은 다음을 참조하세요.

  • :session (세션)

    사용할 세션입니다.

반환합니다:

  • (Array<Hash>)

    각 데이터베이스 에 대한 정보입니다.

이후:

  • 2.0.5



962
963
964
965
966
967
968
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 962

def list_databases(필터 = {}, name_only = 거짓, opts = {})
  cmd = { listDatabases: 1 }
  cmd[:nameOnly] = !!name_only
  cmd[:filter] = 필터 하지 않는 한 필터.비어 있나요?
  cmd[:authorizedDatabases] = true 만약 opts[:authorized_databases]
  메서드를(Database::ADMIN).database.read_command(cmd, opts).first[Database::데이터베이스]
end

#list_mongo_databases(filter = {}, opts = {}) ⇒ Array<Mongo::Database>

Mongo::Database 객체의 목록을 반환합니다.

예시:

Mongo::Database 객체 목록을 가져옵니다.

client.list_mongo_databases

매개변수:

  • 필터 (해시) (기본값: {})

    데이터베이스 목록을 가져오기 위한 필터 기준입니다.

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

    명령 옵션.

  • 옵션 (해시)

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

옵션 해시(opts):

  • :session (세션)

    사용할 세션입니다.

반환합니다:

이후:

  • 2.5.0



985
986
987
988
989
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 985

def list_mongo_databases(필터 = {}, opts = {})
  database_names(필터, opts).수집 do |이름|
    Database.신규(self, 이름, 옵션)
  end
end

#max_read_retries정수

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

레거시 읽기 재시도를 사용할 때 클라이언트 가 읽기 작업을 재시도할 수 있는 최대 횟수를 가져옵니다.

반환합니다:

  • (정수)

    최대 재시도 횟수입니다.

이후:

  • 2.0.0



649
650
651
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 649

def max_read_retries
  옵션[:max_read_retries] || 클러스터::MAX_READ_RETRIES
end

#max_write_retries정수

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

레거시 쓰기 재시도를 사용할 때 클라이언트가 쓰기 작업을 재시도할 수 있는 최대 횟수를 가져옵니다.

반환합니다:

  • (정수)

    최대 재시도 횟수입니다.

이후:

  • 2.0.0



669
670
671
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 669

def max_write_retries
  옵션[:max_write_retries] || 클러스터::MAX_WRITE_RETRIES
end

#read_concern해시

이 클라이언트 에 대한 읽기 고려 (read concern) 를 가져옵니다.

예시:

클라이언트 읽기 고려를 가져옵니다.

client.read_concern

반환합니다:

  • (해시)

    읽기 고려.

이후:

  • 2.6.0



846
847
848
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 846

def read_concern
  옵션[:read_concern]
end

#read_preferenceBSON::Document

클라이언트 에 전달된 옵션에서 읽기 설정 (read preference) 을 가져옵니다.

예시:

읽기 설정을 가져옵니다.

client.read_preference

반환합니다:

  • (BSON::Document)

    사용자 정의 읽기 설정. 문서에는 다음과 같은 필드가 있을 수 있습니다.

    • : 모드 - 기호로 지정된 읽기 설정 (read preference) . 유효한 값은 프라이머리, :primary_preferred, : 세컨더리, :secondary_preferred:nearest 입니다.

    • :tag_sets - 해시 배열입니다.

    • :local_threshold.

이후:

  • 2.0.0



729
730
731
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 729

def read_preference
  @read_preference ||= 옵션[:read]
end

#read_retry_intervalFloat

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

레거시 읽기 재시도를 사용할 때 읽기를 재시도하는 간격(초)을 가져옵니다.

반환합니다:

  • (Float)

    간격입니다.

이후:

  • 2.0.0



659
660
661
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 659

def read_retry_interval
  옵션[:read_retry_interval] || 클러스터::READ_RETRY_INTERVAL
end

#reconnecttrue

클라이언트 를 다시 연결합니다.

예시:

클라이언트 를 다시 연결합니다.

client.reconnect

반환합니다:

  • (true)

    항상 사실입니다.

이후:

  • 2.1.0



897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 897

def 다시 연결
  주소 = cluster.주소.map(&:to_s)

  @connect_lock.동기화 do
    do_close 구출 nil

    @cluster = 클러스터.신규(주소, 모니터링, cluster_options)

    만약 @options[:auto_encryption_options]
      build_encrypter
    end

    @closed = 거짓
  end

  true
end

#server_selectorMongo::ServerSelector

서버 선택기를 가져옵니다. 클라이언트 옵션에 정의된 읽기 설정을 사용하거나 기본 서버 선택기를 사용합니다.

예시:

서버 선택기를 가져옵니다.

client.server_selector

반환합니다:

  • (Mongo::ServerSelector)

    사용자 정의 읽기 설정 (read preference) 또는 프라이머리 서버 선택기 기본값 을 사용하는 서버 선택기입니다.

이후:

  • 2.5.0



707
708
709
710
711
712
713
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 707

def server_selector
  @server_selector ||= 만약 read_preference
    ServerSelector.get(read_preference)
  other
    ServerSelector.기본
  end
end

#start_session(options = {}) ⇒ Session

참고:

세션은 한 번에 여러 스레드에서 사용할 수 없습니다. 세션 객체는 스레드로부터 안전하지 않습니다.

세션을 시작합니다.

배포서버 서버가 세션을 지원 하지 않는 경우, Mongo::Error::InvalidSession을 발생시킵니다. 이 예외는 운전자 가 데이터 보유 서버 에 연결되어 있지 않은 경우에도 발생할 수 있습니다( 예시: 페일오버).

예시:

세션을 시작합니다.

client.start_session(causal_consistency: true)

매개변수:

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

    세션 옵션. Session#initialize가 허용하는 옵션을 허용합니다.

반환합니다:

이후:

  • 2.5.0



1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1010

def start_session(옵션 = {})
  Session = get_session!(옵션.merge(암시적: 거짓))
  만약 block_given?
    시작
      yield Session
    보장
      Session.end_session
    end
  other
    Session
  end
end

#요약string

참고:

반환된 요약 string 의 정확한 형식과 레이아웃은 드라이버의 공개 API 에 포함되지 않으며 언제든지 변경될 수 있습니다.

클라이언트 상태에 대한 요약을 가져옵니다.

반환합니다:

  • (string)

    요약 string.

이후:

  • 2.7.0



693
694
695
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 693

def 요약
  "#<Client cluster=#{cluster.요약}>"
end

#update_options(new_options) ⇒ Hash

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

new_options에서 이 클라이언트의 옵션을 업데이트하여 모든 옵션의 유효성을 검사합니다.

새로운 옵션은 다양한 규칙에 따라 변형될 수 있습니다. 클라이언트에 실제로 적용된 옵션의 최종 해시가 반환됩니다.

옵션이 유효성 검사에 실패하면 이 메서드는 경고를 보내거나 예외를 발생시킬 수 있습니다. 이 메서드에서 예외가 발생하면 생성자가 예외를 발생시킨 경우와 유사하게 클라이언트를 삭제해야 합니다.

매개변수:

  • new_options (해시)

    사용할 수 있는 새로운 옵션.

반환합니다:

  • (해시)

    클라이언트에 기록된 새 옵션을 수정했습니다.

이후:

  • 2.0.0



796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 796

def update_options(new_options)
  old_options = @options

  new_options = self.클래스.canonicalize_ruby_options(new_options || {})

  validate_new_options!(new_options). do |opts|
    # 옵션이 동결되었습니다.
    옵션 = @options.dup
    만약 옵션[:write] && opts[:write_concern]
      옵션.삭제(:write)
    end
    만약 옵션[:write_concern] && opts[:write]
      옵션.삭제(:write_concern)
    end

    옵션.update(opts)
    @options = 옵션.동결

    auto_encryption_options_changed =
      @options[:auto_encryption_options] != old_options[:auto_encryption_options]

    # 새로운 auto_encryption_options가 있는 경우 새 암호화기를 만듭니다.
    # 그렇지 않으면 새 클라이언트가 암호화기를 공유하도록 허용합니다.
    # 원래 클라이언트.
    #
    # auto_encryption_options가 nil인 경우 @encrypter를 nil로 설정하되,
    # 원래 클라이언트 에서 여전히 사용할 수 있으므로 암호화기를 닫습니다.
    만약 @options[:auto_encryption_options] && auto_encryption_options_changed
      @connect_lock.동기화 do
        build_encrypter
      end
    elsif @options[:auto_encryption_options].nil?
      @connect_lock.동기화 do
        @encrypter = nil
      end
    end

    validate_options!
    validate_authentication_options!
  end
end

#use(name) ⇒ Mongo::Client

참고:

새 클라이언트는 원래 클라이언트와 클러스터를 공유하며, 결과적으로 모니터링 인스턴스 및 모니터링 이벤트 구독자도 공유합니다.

제공된 이름의 데이터베이스와 이 클라이언트에 구성된 다른 옵션을 사용하여 데이터베이스를 사용하도록 구성된 새 클라이언트를 만듭니다.

예시:

'사용자' 데이터베이스에 대한 클라이언트를 만듭니다.

client.use(:users)

매개변수:

  • 이름 (string, 기호)

    사용할 데이터베이스의 이름입니다.

반환합니다:

이후:

  • 2.0.0



748
749
750
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 748

def 메서드를(이름)
  (database: 이름)
end

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

참고:

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

참고:

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

MongoDB 서버 버전 3.6 부터 애그리게이션 프레임워크에서 '$changeStream' 파이프라인 단계가 지원됩니다. 버전 4.0 부터 이 단계에서는 클라이언트의 클러스터에서 발생하는 모든 변경 사항에 대해 알림을 보내도록 요청할 수 있습니다.

예시:

클라이언트의 클러스터에 대한 변경 알림을 받습니다.

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

매개변수:

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

    선택적 추가 필터 연산자.

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

    변경 스트림 옵션.

옵션 해시(options):

  • :full_document (string)

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

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

    '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)

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

  • :comment (객체)

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

  • :show_expanded_events (부울)

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

반환합니다:

  • (ChangeStream)

    변경 스트림 객체입니다.

이후:

  • 2.6.0



1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1087

def 시계(파이프라인 = [], 옵션 = {})
  반환 메서드를(Database::ADMIN).시계(파이프라인, 옵션) 하지 않는 한 database.이름 == Database::ADMIN

  view_options = 옵션.dup
  view_options[:await_data] = true 만약 옵션[:max_await_time_ms]

  mongo::컬렉션::보기::Change Stream.신규(
    mongo::컬렉션::보기.신규(self["#{Database::COMMAND}.aggregate"], {}, view_options),
    파이프라인,
    mongo::컬렉션::보기::Change Stream::클러스터,
    옵션)
end

#with(new_options = nil) ⇒ Mongo::Client

참고:

지정된 옵션에 따라 반환된 클라이언트는 원래 클라이언트와 클러스터를 공유하거나 새 클러스터로 생성될 수 있습니다. 새 클러스터가 생성되면 새 클라이언트의 모니터링 이벤트 구독자는 기본 이벤트 구독자 세트로 설정되고 원래 클라이언트의 구독자는 복사되지 않습니다.

이 클라이언트의 기존 옵션 위에 전달된 옵션을 병합하여 새 클라이언트를 만듭니다. 원래 클라이언트를 변경하지 않고 특정 옵션을 변경할 때 일회성인 경우에 유용합니다.

예시:

옵션이 변경된 클라이언트 를 가져옵니다.

client.with(:read => { :mode => :primary_preferred })

매개변수:

  • new_options (해시) (기본값: nil)

    사용할 수 있는 새로운 옵션.

반환합니다:

이후:

  • 2.0.0



770
771
772
773
774
775
776
777
778
779
780
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 770

def (new_options = nil)
  복제. do |고객|
    opts = 고객.update_options(new_options || 옵션::편집됨.신규)
    Database.create(고객)
    # 클러스터에 영향을 미치는 몇 가지 옵션이 있는 경우 동일한 클러스터를 사용할 수 없습니다.
    # 변경되었습니다.
    만약 cluster_modating?(opts)
      클러스터.create(고객, 모니터링: opts[:monitoring])
    end
  end
end

#with_session(options = {}, &block) ⇒ 객체

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

가능한 경우 작업에 사용할 세션을 생성하고 제공된 차단에 양보합니다.

:session 옵션이 설정되어 있으면 해당 세션의 유효성을 검사하고 사용합니다. 그렇지 않고 배포에서 세션을 지원하는 경우 새 세션을 만들어 사용합니다. 새 세션이 생성될 때 :implicit 옵션이 제공되면 세션이 암시적(수명 주기는 드라이버에서 관리)이 되고, 그렇지 않으면 세션은 명시적(애플리케이션에서 수명 주기 관리)이 됩니다. 배포에서 세션을 지원하지 않는 경우 차단에 nil을 반환합니다.

차단이 완료되고 세션이 생성되고 암시적이거나 암시적 세션이 전달된 경우 세션이 종료되고 사용 가능한 세션 풀로 반환됩니다.

매개변수:

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

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

옵션 해시(options):

  • :implicit (true | false)

    세션이 전달되지 않은 경우 암시적 세션을 생성할지 여부입니다.

  • :session (세션)

    유효성을 검사하고 반환할 세션입니다.

이후:

  • 2.0.0



1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 1143

def with_session(옵션 = {}, &차단)
  # TODO: RUBY-3174 에 다시 추가합니다.
  # assert_not_closed

  Session = get_session(옵션)

  yield Session
보장
  만약 Session && Session.암시적?
    Session.end_session
  end
end

#write_concernMongo::WriteConcern

이 클라이언트에 대한 쓰기 고려를 가져옵니다. 옵션이 제공되지 않은 경우 기본 단일 서버 확인이 사용됩니다.

예시:

클라이언트 쓰기 고려를 가져옵니다.

client.write_concern

반환합니다:

이후:

  • 2.0.0



859
860
861
# 파일 'build/ruby-driver-v2.19/lib/mongo/client.rb', 줄 859

def write_concern
  @write_concern ||= writeConcern.get(옵션[:write_concern] || 옵션[:write])
end