클래스: Mongo::Grid::FSBucket

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/grid/ 스트림.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/grid/ 스트림/read.rb,
빌드/ Ruby-driver-v2.19/lib/mongo/grid/ 스트림/ 쓰기 (write).rb

개요

데이터베이스에 있는 GridFS의 뷰를 나타냅니다.

이후:

  • 2.0.0

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

모듈: 스트림

상수 요약 접기

DEFAULT_ROOT =

기본값 루트 접두사입니다.

이후:

  • 2.0.0

'fs'.동결
CHUNKS_INDEX =

청크 컬렉션 인덱스의 사양입니다.

이후:

  • 2.0.0

{ :files_id => 1, :n => 1 }.동결
FILES_INDEX =

파일 컬렉션 인덱스의 사양입니다.

이후:

  • 2.1.0

{ 파일 이름: 1, UploadDate: 1 }.동결

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(database, options = {}) ⇒ FSBucket

GridFS 를 만듭니다.

예시:

GridFS 를 만듭니다.

Grid::FSBucket.new(database)

매개변수:

  • database (데이터베이스)

    파일이 있는 데이터베이스 입니다.

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

    GridFS 옵션.

옵션 해시(options):

  • :bucket_name (string)

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

  • :chunk_size (정수)

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

  • :fs_name (string)

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

  • :read (해시)

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

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

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

    • :local_threshold.

  • :session (세션)

    사용할 세션입니다.

  • :write (해시)

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

  • :write_concern (해시)

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

이후:

  • 2.0.0



70
71
72
73
74
75
76
77
78
79
80
81
82
83
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 70

def 초기화(database, 옵션 = {})
  @database = database
  @options = 옵션.dup
=begin WriteConcern 객체 지원
  if @options[:write_concern].is_a?(WriteConcern::Base)
    # 인스턴스를 캐시하여 불필요하게 재구성하지 않도록 합니다.
    @write_concern = @options[:write_concern]
    @options[:write_concern] = @write_concern.options
  end
=end
  @options.동결
  @chunks_collection = database[chunks_name]
  @files_collection = database[파일 이름]
end

인스턴스 속성 세부 정보

#chunks_collection컬렉션 (읽기 전용)

반환값 chunks_collection 청크 컬렉션 입니다.

반환합니다:

  • (컬렉션)

    chunks_collection 청크 컬렉션 입니다.

이후:

  • 2.0.0



88
89
90
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 88

def chunks_collection
  @chunks_collection
end

#databaseDatabase (readonly)

반환 데이터베이스 데이터베이스입니다.

반환합니다:

이후:

  • 2.0.0



93
94
95
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 93

def database
  @database
end

#파일 컬렉션컬렉션 (읽기 전용)

반환값 파일 컬렉션 파일 컬렉션 입니다.

반환합니다:

  • (컬렉션)

    file_collection 파일 컬렉션 입니다.

이후:

  • 2.0.0



98
99
100
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 98

def 파일 컬렉션
  @files_collection
end

#options해시 (읽기 전용)

반환 옵션 FSBucket 옵션입니다.

반환합니다:

  • (해시)

    options FSBucket 옵션입니다.

이후:

  • 2.1.0



103
104
105
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 103

def 옵션
  @options
end

인스턴스 메서드 세부 정보

#삭제(ID) ⇒ 결과

GridFS에서 ID로 식별되는 단일 파일을 제거합니다.

예시:

GridFS 에서 파일 을 제거합니다.

fs.delete(id)

매개변수:

  • id (BSON::ObjectId, Object)

    제거 파일 의 ID입니다.

반환합니다:

  • (결과)

    제거 결과입니다.

다음을 발생시킵니다.

이후:

  • 2.1.0



220
221
222
223
224
225
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 220

def 삭제(id)
  결과 = 파일 컬렉션.찾기({ :_id => id }, @options).delete_one
  chunks_collection.찾기({ :files_id => id }, @options).delete_many
  올리다 오류::FileNotFound.신규(id, :id) 만약 결과.n == 0
  결과
end

#delete_one(file) ⇒ 결과

GridFS 에서 단일 파일 을 제거합니다.

예시:

GridFS 에서 파일 을 제거합니다.

fs.delete_one(file)

매개변수:

  • 파일 (Grid::File)

    제거 파일 입니다.

반환합니다:

  • (결과)

    제거 결과입니다.

이후:

  • 2.0.0



204
205
206
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 204

def delete_one(파일)
  삭제(파일.id)
end

#download_to_stream(ID, io) ⇒ 객체

ID 로 지정된 파일 의 내용을 다운로드 하여 대상 io 객체 에 씁니다.

예시:

파일 을 다운로드하여 io 객체 에 쓰기 (write) .

fs.download_to_stream(id, io)

매개변수:

  • id (BSON::ObjectId, Object)

    읽을 파일 의 ID입니다.

  • io (IO)

    쓸 io 객체입니다.

이후:

  • 2.1.0



266
267
268
269
270
271
272
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 266

def download_to_stream(id, io)
  open_download_stream(id) do |스트림|
    스트림. do |청크|
      io << 청크
    end
  end
end

#download_to_stream_by_name(filename, io, opts = {}) ⇒ 객체

options 의 파일 이름 및 수정본으로 지정된 저장된 파일 의 내용을 다운로드 하고 대상 io 객체 에 내용을 씁니다.

수정본 번호는 다음과 같이 정의됩니다: 0 = 원래 저장된 파일 1 = 첫 번째 수정본 2 = 두 번째 수정본 등... -2 = 두 번째로 최근 수정본 -1 = 가장 최근 수정본

# @example 원본 파일을 다운로드합니다.

fs.download_to_stream_by_name('some-file.txt', io, revision: 0)

예시:

가장 최근의 수정본을 다운로드합니다.

fs.download_to_stream_by_name('some-file.txt', io)

저장된 파일 의 두 번째 수정본을 다운로드합니다.

fs.download_to_stream_by_name('some-file.txt', io, revision: 2)

매개변수:

  • 파일 이름 (string)

    파일 이름입니다.

  • io (IO)

    쓸 io 객체입니다.

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

    다운로드 옵션.

옵션 해시(opts):

  • :revision (정수)

    다운로드 할 파일 의 수정본 번호입니다. 기본값은 -1 이며, 가장 최근 버전입니다.

다음을 발생시킵니다.

이후:

  • 2.1.0



359
360
361
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 359

def download_to_stream_by_name(파일 이름, io, opts = {})
  download_to_stream(open_download_stream_by_name(파일 이름, opts).file_id, io)
end

#find(selector = nil, options = {}) ⇒ CollectionView

지정된 선택기와 일치하는 파일 컬렉션 문서를 찾습니다.

예시:

파일 이름으로 파일 컬렉션 문서를 찾습니다.

fs.find(filename: 'file.txt')

매개변수:

  • 선택기 (해시) (기본값: nil)

    찾기에 사용할 선택기입니다.

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

    찾기 옵션입니다.

옵션 해시(options):

  • :allow_disk_use (true, false)

    서버 가 찾기 작업을 실행하는 동안 디스크에 임시 데이터를 쓰기 (write) 수 있는지 여부입니다.

  • :batch_size (정수)

    MongoDB 의 각 결과 배치 에서 반환된 문서 수입니다.

  • :limit (정수)

    쿼리 에서 반환할 Docs 의 최대 개수입니다.

  • :no_cursor_timeout (true, false)

    서버 는 일반적으로 과도한 메모리 사용을 방지하기 위해 비활성 기간(10 분) 후에 유휴 커서의 시간을 초과합니다. 이를 방지하려면 이 옵션을 설정합니다.

  • :skip (정수)

    결과를 반환하기 전에 건너뛸 Docs 의 수입니다.

  • :sort (해시)

    결과 설정하다 의 정렬 기준이 되는 키 및 방향 쌍입니다.

반환합니다:

  • (CollectionView)

    컬렉션 보기입니다.

이후:

  • 2.1.0



134
135
136
137
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 134

def 찾기(선택기 = nil, 옵션 = {})
  opts = 옵션.merge(읽기: read_preference) 만약 read_preference
  파일 컬렉션.찾기(선택기, opts || 옵션)
end

#find_one(selector = nil) ⇒ Grid::File

더 이상 사용되지 않습니다.

-1 제한을 가진 #find 를 대신 사용하세요. 버전 3.0 에서 제거될 예정입니다.

GridFS 에서 파일 을 찾습니다.

예시:

ID로 파일 을 찾습니다.

fs.find_one(_id: id)

파일 이름으로 파일 을 찾습니다.

fs.find_one(filename: 'test.txt')

매개변수:

  • 선택기 (해시) (기본값: nil)

    선택기.

반환합니다:

이후:

  • 2.0.0



155
156
157
158
159
160
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 155

def find_one(선택기 = nil)
  file_info = 파일 컬렉션.찾기(선택기).first
  반환 nil 하지 않는 한 file_info
  청크 = chunks_collection.찾기(:files_id => file_info[:_id]).sort(:n => 1)
  그리드::file.신규(청크.to_a, 옵션::매퍼.변환(file_info, 그리드::file::정보::지도 제작.반전))
end

#insert_one(file) ⇒ BSON::ObjectId

더 이상 사용되지 않습니다.

대신 #upload_from_stream 또는 #open_upload_stream을 사용하세요. 버전 3.0 에서 제거될 예정입니다.

GridFS에 단일 파일을 삽입합니다.

예시:

단일 파일 을 삽입합니다.

fs.insert_one(file)

매개변수:

  • 파일 (Grid::File)

    삽입할 파일입니다.

반환합니다:

  • (BSON::ObjectId)

    파일 ID입니다.

이후:

  • 2.0.0



175
176
177
178
179
180
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 175

def insert_one(파일)
  @indexes ||= ensure_indexes!
  chunks_collection.insert_many(파일.청크)
  파일 컬렉션.insert_one(파일.정보)
  파일.id
end

#open_download_stream(ID, options = nil) {|The| ... } ⇒ Stream::Read

ID 로 지정된 파일 을 다운로드할 수 있는 스트림 을 엽니다.

예시:

파일 을 다운로드할 수 있는 스트림 을 엽니다.

fs.open_download_stream(id)

매개변수:

  • id (BSON::ObjectId, Object)

    읽을 파일 의 ID입니다.

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

    옵션.

옵션 해시(options):

  • :file_info_doc (BSON::Document)

    내부 드라이버 전용입니다. 파일 정보로 사용할 BSON 문서입니다.

수율 매개변수:

  • (해시)

    스트림을 읽습니다.

반환합니다:

이후:

  • 2.1.0



243
244
245
246
247
248
249
250
251
252
253
254
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 243

def open_download_stream(id, 옵션 = nil)
  옵션 = Utils.shallow_symbolize_keys(옵션 || {})
  read_stream(id, **옵션). do |스트림|
    만약 block_given?
      시작
        yield 스트림
      보장
        스트림.닫기
      end
    end
  end
end

#open_download_stream_by_name(filename, opts = {}) {|The| ... } ⇒ Stream::Read

애플리케이션 이 옵션의 파일 이름 및 수정본으로 지정된 저장된 파일 의 내용을 읽을 수 있는 스트림 을 엽니다.

수정본 번호는 다음과 같이 정의됩니다: 0 = 원래 저장된 파일 1 = 첫 번째 수정본 2 = 두 번째 수정본 등... -2 = 두 번째로 최근 수정본 -1 = 가장 최근 수정본

# @example 스트림을 열어 원본 파일을 다운로드합니다.

fs.open_download_stream_by_name('some-file.txt', revision: 0)

예시:

스트림 을 열어 가장 최근 수정본을 다운로드 합니다.

fs.open_download_stream_by_name('some-file.txt')

스트림을 열어 저장된 파일의 두 번째 수정본을 다운로드합니다.

fs.open_download_stream_by_name('some-file.txt', revision: 2)

매개변수:

  • 파일 이름 (string)

    파일 이름입니다.

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

    다운로드 옵션.

옵션 해시(opts):

  • :revision (정수)

    다운로드 할 파일 의 수정본 번호입니다. 기본값은 -1 이며, 가장 최근 버전입니다.

수율 매개변수:

  • (해시)

    스트림을 읽습니다.

반환합니다:

다음을 발생시킵니다.

이후:

  • 2.1.0



308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 308

def open_download_stream_by_name(파일 이름, opts = {}, &차단)
  수정본 = opts.가져오기(:revision, -1)
  만약 수정본 < 0
    건너뛰기 = 수정본.abs - 1
    sort = { 'uploadDate' => mongo::Index::내림차순 }
  other
    건너뛰기 = 수정본
    sort = { 'uploadDate' => mongo::Index::오름차순 }
  end
  file_info_doc = 파일 컬렉션.찾기({ 파일 이름: 파일 이름} ,
                                     sort: sort,
                                     건너뛰기: 건너뛰기,
                                     limit: -1).first
  하지 않는 한 file_info_doc
    올리다 오류::FileNotFound.신규(파일 이름, :filename) 하지 않는 한 opts[:revision]
    올리다 오류::InvalidFileRevision.신규(파일 이름, opts[:revision])
  end
  open_download_stream(file_info_doc[:_id], file_info_doc: file_info_doc, &차단)
end

#open_upload_stream(filename, opts = {}) {|The| ... } ⇒ Stream::Write

파일 또는 블롭의 콘텐츠를 쓸 수 있는 GridFS에 대한 업로드 스트림을 엽니다.

매개변수:

  • 파일 이름 (string)

    GridFS 의 파일 이름입니다.

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

    쓰기 (write) 스트림 에 대한 옵션입니다.

  • 옵션 (해시)

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

옵션 해시(opts):

  • :file_id (객체)

    선택 사항인 고유 파일 ID입니다. 파일 ID를 제공하지 않으면 BSON ::ObjectId가 자동으로 생성됩니다.

  • :chunk_size (정수)

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

  • :metadata (해시)

    파일 컬렉션 문서의 '메타데이터' 필드에 대한 사용자 데이터입니다.

  • :content_type (string)

    파일 의 콘텐츠 유형입니다. 지원이 중단되었습니다. 대신 메타데이터 문서 를 사용하세요.

  • :aliases (Array<String>)

    별칭 목록입니다. 지원이 중단되었습니다. 대신 메타데이터 문서 를 사용하세요.

수율 매개변수:

  • (해시)

    쓰기 (write) 스트림.

반환합니다:

이후:

  • 2.1.0



389
390
391
392
393
394
395
396
397
398
399
400
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 389

def open_upload_stream(파일 이름, opts = {})
  opts = Utils.shallow_symbolize_keys(opts)
  write_stream(파일 이름, **opts). do |스트림|
    만약 block_given?
      시작
        yield 스트림
      보장
        스트림.닫기
      end
    end
  end
end

#접두사string

GridFS의 접두사 가져오기

예시:

접두사를 가져옵니다.

fs.prefix

반환합니다:

  • (string)

    GridFS 접두사입니다.

이후:

  • 2.0.0



190
191
192
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 190

def prefix
  @options[:fs_name] || @options[:bucket_name] || DEFAULT_ROOT
end

#read_preferenceBSON::Document

참고:

이 메서드는 FSBucket 생성자가 :read 유형을 BSON ::Document가 아닌 해시로 지정하더라도 항상 BSON::Document 인스턴스 를 반환합니다.

읽기 설정을 가져옵니다.

반환합니다:

  • (BSON::Document)

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

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

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

    • :local_threshold.

이후:

  • 2.0.0



460
461
462
463
464
465
466
467
468
469
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 460

def read_preference
  @read_preference ||= 시작
    pref = 옵션[:read] || database.read_preference
    만약 BSON::문서 === pref
      pref
    other
      BSON::문서.신규(pref)
    end
  end
end

#upload_from_stream(filename, io, opts = {}) ⇒ BSON::ObjectId

사용자 파일 을 GridFS 버킷에 업로드합니다. 소스 스트림 에서 사용자 파일 의 내용을 읽고 이를 청크 컬렉션 에 청크로 업로드합니다. 모든 청크가 업로드된 후에는 파일 컬렉션 의 파일 이름에 대한 파일 컬렉션 문서 를 생성합니다.

예시:

GridFS 버킷에 파일 을 업로드합니다.

fs.upload_from_stream('a-file.txt', file)

매개변수:

  • 파일 이름 (string)

    업로드할 파일의 파일 이름입니다.

  • io (IO)

    업로드할 소스 io 스트림 입니다.

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

    쓰기 (write) 스트림 에 대한 옵션입니다.

  • 옵션 (해시)

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

옵션 해시(opts):

  • :file_id (객체)

    선택 사항인 고유 파일 ID입니다. An ObjectId is generated otherwise.

  • :chunk_size (정수)

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

  • :metadata (해시)

    파일 컬렉션 문서의 '메타데이터' 필드에 대한 사용자 데이터입니다.

  • :content_type (string)

    파일 의 콘텐츠 유형입니다. 지원이 중단되었습니다. 대신 메타데이터 문서 를 사용하세요.

  • :aliases (Array<String>)

    별칭 목록입니다. 지원이 중단되었습니다. 대신 메타데이터 문서 를 사용하세요.

반환합니다:

  • (BSON::ObjectId)

    ObjectId 파일 ID입니다.

이후:

  • 2.1.0



430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 430

def upload_from_stream(파일 이름, io, opts = {})
  open_upload_stream(파일 이름, opts) do |스트림|
    시작
      스트림.쓰기(io)
    # IOError 및 SystemCallError는 io.
    # Error::SocketError 및 Error::SocketTimeoutError는
    # MongoDB에 쓰기.
    구출 IOError, SystemCallError, 오류::SocketError, 오류::SocketTimeoutError
      시작
        스트림.중단
      구출 오류::OperationFailure
      end
      올리다
    end
  end.file_id
end

#write_concernMongo::WriteConcern

쓰기 고려 (write concern) 를 가져옵니다.

예시:

쓰기 고려 (write concern) 를 가져옵니다.

stream.write_concern

반환합니다:

이후:

  • 2.1.0



479
480
481
482
483
484
485
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/grid/fs_bucket.rb', 줄 479

def write_concern
  @write_concern ||= 만약 wco = @options[:write_concern] || @options[:write]
    writeConcern.get(wco)
  other
    database.write_concern
  end
end