클래스: Mongo::Database
- 상속:
-
객체
- 객체
- Mongo::Database
- 확장자:
- 전달 가능
- 다음을 포함합니다.
- 재시도 가능
- 다음에 정의됨:
- lib/mongo/database.rb,
lib/mongo/database/view.rb,
lib/mongo/database/cursor_command_view.rb
개요
db 서버 의 데이터베이스 와 이 수준에서 실행할 수 있는 작업을 나타냅니다.
네임스페이스 아래에 정의됨
클래스: CursorCommandView, View
상수 요약 접기
- ADMIN =
관리 데이터베이스 이름입니다.
'관리자'- 명령 =
데이터베이스 명령이 작동하는 ' 컬렉션 "입니다.
'$cmd'- DEFAULT_OPTIONS =
기본값 데이터베이스 옵션입니다.
옵션::편집됨.신규(database: ADMIN).동결
- NAME =
더 이상 사용되지 않습니다.
데이터베이스 이름 필드 상수입니다.
'이름'- 데이터베이스 =
데이터베이스 상수입니다.
'databases'- NAMESPACES =
모든 컬렉션 이름을 포함하는 컬렉션 의 이름입니다.
'system.namespaces'
인스턴스 속성 요약 접기
-
#client ⇒ Client
읽기 전용
클라이언트 데이터베이스 클라이언트 입니다.
-
#이름 ⇒ string
읽기 전용
이름 데이터베이스 의 이름입니다.
-
옵션 #개 ⇒ 해시
읽기 전용
옵션 옵션입니다.
인스턴스 메서드 요약 접기
-
#==(기타) ⇒ true, false
데이터베이스 객체 가 다른 객체와 동일한지 확인합니다.
-
#[](collection_name, options = {}) ⇒ Mongo::Collection (동의어: # 컬렉션)
제공된 이름으로 이 데이터베이스 에서 컬렉션 을 가져옵니다.
-
#aggregate(pipeline, options = {}) ⇒ Collection::View::Aggregation
데이터베이스 에서 집계 을 수행합니다.
-
#cluster ⇒ Mongo::Server
클러스터 에서 프라이머리 서버 를 가져옵니다.
-
#collection_names(options = {}) ⇒ Array<String>
데이터베이스 에 있는 비시스템 컬렉션의 모든 이름을 가져옵니다.
-
collection #collection(options = {}) ⇒ Array<Mongo::Collection>
이 데이터베이스 에 속하는 모든 비시스템 컬렉션을 가져옵니다.
-
#command(operation, opts = {}) ⇒ Mongo::Operation::Result
데이터베이스에서 명령을 실행합니다.
-
#cursor_command(command, options = {}) ⇒ Mongo::Cursor
커서를 반환하는 명령을 실행하고 응답을 커서로 구문 분석합니다.
-
#drop(options = {}) ⇒ Result
데이터베이스 와 모든 관련 정보를 삭제합니다.
-
#fs(options = {}) ⇒ Grid::FSBucket
이 데이터베이스 에 대한 그리드 '파일 시스템'을 가져옵니다.
-
#initialize(클라이언트, name, options = {}) ⇒ 데이터베이스
생성자
새 데이터베이스 객체 를 인스턴스화합니다.
-
#검사 ⇒ string
데이터베이스에 대한 예쁜 인쇄된 string 검사를 받으세요.
-
#list_collections(options = {}) ⇒ Array<Hash>
데이터베이스의 모든 비시스템 컬렉션에 대한 정보를 가져옵니다.
-
#operation_timeouts(opts) ⇒ 해시
비공개
작업 수준에서 설정하다 Timeout_ms 값(있는 경우) 및/또는 컬렉션/ 데이터베이스/ 클라이언트 수준(있는 경우)에 설정하다 timeout_ms입니다.
-
#read_command(operation, opts = {}) ⇒ 해시
비공개
데이터베이스 에서 읽기 명령을 실행하고, 필요한 경우 읽기를 다시 시도합니다.
-
#timeout_ms ⇒ Integer | nil
비공개
이 데이터베이스 또는 해당 클라이언트 에 대한 작업 시간 초과입니다.
-
#users ⇒ View::User
이 데이터베이스 에 대한 사용자 뷰를 가져옵니다.
-
#watch(pipeline = [], options = {}) ⇒ ChangeStream
사용자가 클라이언트의 데이터베이스 에서 발생하는 모든 변경사항에 대해 알림 보내도록 요청 수 있습니다.
Retryable에 포함된 메서드
#read_Worker, #select_server, #with_overload_retry, #write_Worker
생성자 세부 정보
#initialize(클라이언트, name, options = {}) ⇒ 데이터베이스
새 데이터베이스 객체 를 인스턴스화합니다.
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 |
인스턴스 속성 세부 정보
#클라이언트 ⇒ 클라이언트 (읽기 전용)
반환값 클라이언트 데이터베이스 클라이언트 입니다.
61 62 63 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 61 def 고객 @client end |
#이름 ⇒ string (읽기 전용)
반환값 name 데이터베이스 의 이름입니다.
64 65 66 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 64 def 이름 @name end |
#options ⇒ 해시 (읽기 전용)
반환값 options options.
67 68 69 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 67 def @options end |
인스턴스 메서드 세부 정보
#==(기타) ⇒ true, false
데이터베이스 객체 가 다른 객체와 동일한지 확인합니다. 이름이 동일한지 간단히 확인합니다.
94 95 96 97 98 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 94 def ==(기타) 반환 거짓 하지 않는 한 기타.is_a?(Database) 이름 == 기타.이름 end |
#[](collection_name, options = {}) ⇒ Mongo::Collection ~ 라고도 함: 컬렉션
제공된 이름으로 이 데이터베이스 에서 컬렉션 을 가져옵니다.
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
데이터베이스 에서 집계 을 수행합니다.
568 569 570 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 568 def 집계(파이프라인, = {}) 보기.신규(self, ).집계(파이프라인, ) end |
#cluster ⇒ Mongo::Server
반환값 클러스터 에서 프라이머리 서버 를 가져옵니다.
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.
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.
206 207 208 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 206 def collections( = {}) collection_names().map { |이름| 컬렉션(이름) } end |
#command(operation, opts = {}) ⇒ Mongo::Operation::Result
데이터베이스에서 명령을 실행합니다.
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_ms 와 max_time_ms 을 모두 설정하는 것은 지원되지 않으며 작동이 정의되지 않습니다.
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) || {} = () 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, ) 커서 = 커서.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
데이터베이스 와 모든 관련 정보를 삭제합니다.
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
이 데이터베이스 에 대한 그리드 '파일 시스템'을 가져옵니다.
522 523 524 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 522 def fs( = {}) 그리드::FSBucket.신규(self, ) end |
#검사 ⇒ string
데이터베이스에 대한 예쁜 인쇄된 string 검사를 받으세요.
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.
178 179 180 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 178 def list_collections( = {}) 보기.신규(self, ).list_collections() end |
#operation_timeouts(opts) ⇒ 해시
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
작업 수준에서 설정하다 timeout_ms 값(있는 경우) 및/또는 컬렉션/ 데이터베이스/ 클라이언트 수준(있는 경우)에 설정하다 timeout_ms를 반환합니다.
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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
데이터베이스 에서 읽기 명령을 실행하고, 필요한 경우 읽기를 다시 시도합니다.
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_ms ⇒ Integer | nil
이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.
이 데이터베이스 또는 해당 클라이언트 에 대한 작업 시간 초과를 반환합니다.
651 652 653 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 651 def timeout_ms [:timeout_ms] || 고객.timeout_ms end |
#users ⇒ View::User
이 데이터베이스 에 대한 사용자 뷰를 가져옵니다.
534 535 536 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 534 def 사용자 인증::사용자::보기.신규(self) end |
#watch(파이프라인 = [], options = {}) ⇒ ChangeStream
변경 스트림 '대다수' 읽기 고려 (read concern) 만 허용합니다.
재개 가능성을 지원할 목적으로 $changeStream 단계로 원시 애그리게이션을 실행하는 것보다 이 헬퍼 메서드를 사용하는 것이 좋습니다.
사용자가 클라이언트의 데이터베이스 에서 발생하는 모든 변경사항에 대해 알림 보내도록 요청 수 있습니다.
635 636 637 638 639 640 641 642 643 644 645 |
# 파일 'lib/ Mongo/ 데이터베이스.rb', 줄 635 def 시계(파이프라인 = [], = {}) = .dup [:cursor_type] = :tailable_await 만약 [:max_await_time_ms] mongo::컬렉션::보기::Change Stream.신규( mongo::컬렉션::보기.신규(컬렉션("#{명령}.aggregate"), {}, ), 파이프라인, mongo::컬렉션::보기::Change Stream::데이터베이스, ) end |