클래스: Mongo::Index::View

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
열거 가능, 재시도 가능
다음에 정의됨:
빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb

개요

인덱스 뷰를 나타내는 클래스입니다.

이후:

  • 2.0.0

상수 요약 접기

KEY =

인덱스 키 필드 입니다.

이후:

  • 2.0.0

'key'.동결
NAME =

인덱스 이름 필드 입니다.

이후:

  • 2.0.0

'name'.동결
OPTIONS =

Ruby 인덱스 옵션과 서버 옵션의 매핑입니다.

이후:

  • 2.0.0

{
  : 배경 => : 배경,
  :bits => :bits,
  :bucket_size => :bucketSize,
  :default_language => :default_language,
  :expire_after => :expireAfterSeconds,
  :expire_after_seconds => :expireAfterSeconds,
  :key => :key,
  :language_override => :language_override,
  :max => :max,
  :min => :min,
  :name => :name,
  :partial_filter_expression => :partialFilterExpression,
  :sparse => :sparse,
  :sphere_version => :'2dsphereIndexVersion',
  :storage_engine => :storageEngine,
  :text_version => :textIndexVersion,
  :unique => :unique,
  :version => :v,
  :weights => :weights,
  :collation => :collation,
  :comment => :comment,
  :wildcard_projection => :wildcardProjection,
}.동결

인스턴스 속성 요약 접기

인스턴스 메서드 요약 접기

Retryable에 포함된 메서드

#read_Worker, #select_server, #write_Worker

생성자 세부 정보

#initialize(컬렉션, options = {}) ⇒ 보기

새 인덱스 뷰를 만듭니다.

예시:

새 인덱스 뷰를 만듭니다.

View::Index.new(collection)

매개변수:

  • 컬렉션 (컬렉션)

    컬렉션.

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

    인덱스 목록을 가져오는 옵션입니다. listIndexes 명령이 서버 버전 >=2.8 와 함께 사용되는 경우에만 관련이 있습니다.

옵션 해시(options):

  • :batch_size (정수)

    listIndexes 명령에서 반환된 결과의 배치 크기입니다.

이후:

  • 2.0.0



293
294
295
296
297
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 293

def 초기화(컬렉션, 옵션 = {})
  @collection = 컬렉션
  @batch_size = 옵션[:batch_size]
  @options = 옵션
end

인스턴스 속성 세부 정보

#batch_size정수 (읽기 전용)

반환값 batch_size listIndexes 명령을 보낼 때 결과 배치 의 크기입니다.

반환합니다:

  • (정수)

    batch_size listIndexes 명령을 보낼 때 결과 배치 의 크기입니다.

이후:

  • 2.0.0



34
35
36
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 34

def batch_size
  @batch_size
end

#collectioncollection (읽기 전용)

반환값 컬렉션 인덱스 컬렉션 입니다.

반환합니다:

  • (컬렉션)

    컬렉션 인덱스 컬렉션 입니다.

이후:

  • 2.0.0



30
31
32
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 30

def 컬렉션
  @collection
end

인스턴스 메서드 세부 정보

#create_many(*models) ⇒ 결과

참고:

MongoDB 3.0.0 이상에서는 인덱스가 서버 에서 병렬로 생성됩니다.

컬렉션 에 여러 인덱스를 만듭니다.

예시:

여러 인덱스를 만듭니다.

view.create_many([
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true }
])

옵션으로 여러 인덱스를 생성합니다.

view.create_many(
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true },
  { commit_quorum: 'majority' }
)

매개변수:

  • 모델 (Array<Hash>)

    인덱스 사양입니다. 배열의 마지막 항목을 제외하고 각 모델에는 반드시 :key 옵션이 포함되어야 하며, 이 항목은 createIndexes 작업과 관련된 옵션을 지정하는 해시일 수 있습니다. 허용되는 옵션은 다음과 같습니다.

    • commit_quorum: 프라이 프라이머리 가 인덱스를 준비됨으로 표시하기 전에 프라이머리 를 포함한 복제본 세트 의 데이터 보유 멤버가 인덱스 빌드를 성공적으로 완료해야 하는 멤버의 수를 지정합니다. 잠재적인 값은 다음과 같습니다.

      • 0 부터 복제본 세트 멤버 수까지의 정수

      • "majority"는 데이터 보유 노드의 과반수가 투표해야 함을 나타냅니다.

      • "votingMembers"는 투표 데이터를 보유한 모든 노드가 투표해야 함을 의미합니다.

    • session: 사용할 세션입니다.

    • comment: 이 명령에 첨부할 사용자 제공 주석입니다.

반환합니다:

  • (결과)

    명령의 결과입니다.

이후:

  • 2.0.0



206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 206

def create_many(*모델)
  모델 = 모델.flatten
  옵션 = {}
  만약 모델 && !모델.last.키?(:key)
    옵션 = 모델.
  end

  고객.send(:with_session, @options.merge(옵션)) do |Session|
    서버 = Next_primary(nil, Session)

    인덱스 = normalize_models(모델, 서버)
    인덱스. do |index|
      만약 index[:bucketSize] || index['bucketSize']
        고객.log_warn("Haystack 인덱스(bucketSize 인덱스 옵션)는 MongoDB 4.4부터 더 이상 사용되지 않습니다.")
      end
    end

    사양 = {
      인덱스: 인덱스,
      db_name: database.이름,
      coll_name: 컬렉션.이름,
      세션: Session,
      commit_quorum: 옵션[:commit_quorum],
      write_concern: write_concern,
      comment: 옵션[:comment],
    }

    작업::인덱스 생성.신규(사양).실행(서버, 컨텍스트: 작업::Context.신규(클라이언트: 고객, 세션: Session))
  end
end

#create_one(keys, options = {}) ⇒ Result

참고:

나열된 옵션은 사용 가능한 옵션의 하위 집합일 수 있습니다.

컬렉션 에 인덱스 를 만듭니다.

서버 버전별 지원되는 옵션의 전체 목록은 MongoDB 설명서를 참조하세요.

예시:

컬렉션 에 고유 인덱스 를 만듭니다.

view.create_one({ name: 1 }, { unique: true })

매개변수:

  • (해시)

    필드 이름/방향 쌍의 해시입니다.

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

    이 인덱스 에 대한 옵션입니다.

옵션 해시(options):

  • :unique (true, false) — 기본값: false

    true인 경우 이 인덱스 는 해당 필드 에 고유성 제약 조건을 시행하다 합니다.

  • : 배경 (true, false) — 기본값: false

    true이면 인덱스가 백그라운드에서 빌드됩니다(서버 버전 >= 1.3.2 에서만 사용 가능).

  • :drop_dups (true, false) — 기본값: false

    이 컬렉션 에 고유 인덱스 를 만드는 경우 이 옵션은 첫 번째 문서 가 데이터베이스 인덱스를 유지하고 이 필드 에서 값이 중복된 모든 후속 문서를 삭제합니다.

  • :bucket_size (정수) — default: nil

    geoHaystack 인덱스와 함께 사용합니다. 주어진 경도 및 위도에 대한 특정 근접성 내에서 함께 그룹 할 문서 수입니다.

  • :max (정수) — default: nil

    지리적 인덱스 의 최대 위도와 경도를 지정합니다.

  • :min (정수) — default: nil

    지리적 인덱스 의 최소 위도와 경도를 지정합니다.

  • :partial_filter_expression (해시)

    부분 인덱스 에 대한 필터하다 를 지정합니다.

  • :hidden (부울)

    :hidden이 true이면 이 인덱스 는 컬렉션 에 존재하지만 작업을 실행할 때 쿼리 플래너에서 사용되지 않습니다.

  • :commit_quorum (string | 정수)

    프라이머리를 포함한 복제본 세트 의 데이터 보유 멤버 수를 지정하여 프라이머리 프라이머리 가 인덱스를 준비됨으로 표시하기 전에 인덱스 빌드를 성공적으로 완료해야 합니다. 잠재적인 값은 다음과 같습니다.

    • 0 부터 복제본 세트 멤버 수까지의 정수

    • "majority"는 데이터 보유 노드의 과반수가 투표해야 함을 나타냅니다.

    • "votingMembers"는 투표 데이터를 보유한 모든 노드가 투표해야 함을 의미합니다.

  • :session (세션)

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

  • :comment (객체)

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

반환합니다:

  • (결과)

    응답입니다.

이후:

  • 2.0.0



157
158
159
160
161
162
163
164
165
166
167
168
169
170
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 157

def create_one(, 옵션 = {})
  옵션 = 옵션.dup

  create_options = {}
  만약 Session = @options[:session]
    create_options[:session] = Session
  end
  %i(commit_quorum Session comment). do ||
    만약 value = 옵션.삭제()
      create_options[] = value
    end
  end
  create_many({ 키:  }.merge(옵션), create_options)
end

#drop_all(options = {}) ⇒ 결과

컬렉션 의 모든 인덱스를 삭제합니다.

예시:

컬렉션 의 모든 인덱스를 삭제합니다.

view.drop_all

매개변수:

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

    이 작업에 대한 옵션입니다.

옵션 해시(options):

  • :comment (객체)

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

반환합니다:

  • (결과)

    응답입니다.

이후:

  • 2.0.0



109
110
111
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 109

def drop_all(옵션 = {})
  drop_by_name(Index::ALL, comment: 옵션[:comment])
end

#drop_one(name, options = {}) ⇒ Result

이름별로 인덱스 를 삭제합니다.

예시:

이름별로 인덱스 를 삭제합니다.

view.drop_one('name_1')

매개변수:

  • 이름 (string)

    인덱스의 이름입니다.

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

    이 작업에 대한 옵션입니다.

옵션 해시(options):

  • :comment (객체)

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

반환합니다:

  • (결과)

    응답입니다.

다음을 발생시킵니다.

이후:

  • 2.0.0



91
92
93
94
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 91

def drop_one(이름, 옵션 = {})
  올리다 오류::MultiIndexDrop.신규 만약 이름 == Index::ALL
  drop_by_name(이름, comment: 옵션[:comment])
end

#각각(&block) ⇒ 객체

컬렉션 의 모든 인덱스를 반복합니다.

예시:

모든 인덱스를 가져옵니다.

view.each do |index|
  ...
end

이후:

  • 2.0.0



265
266
267
268
269
270
271
272
273
274
275
276
277
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 265

def (&차단)
  Session = 고객.send(:get_session, @options)
  cursor = read_with_retry_cursor(Session, ServerSelector.기본, self) do |서버|
    send_initial_query(서버, Session)
  end
  만약 block_given?
    cursor. do |doc|
      yield doc
    end
  other
    cursor.to_enum
  end
end

#get(keys_or_name) ⇒ 해시

특정 이름이나 사양으로 인덱스 정보를 가져오는 편리한 메서드입니다.

예시:

이름으로 인덱스 정보를 가져옵니다.

view.get('name_1')

키별로 인덱스 정보를 가져옵니다.

view.get(name: 1)

매개변수:

  • keys_or_name (해시, string)

    인덱스 이름 또는 사양입니다.

반환합니다:

  • (해시)

    인덱스 정보입니다.

이후:

  • 2.0.0



251
252
253
254
255
# 파일 ' 빌드/ Ruby-driver-v2.19/lib/mongo/ 인덱스/view.rb', 줄 251

def get(keys_or_name)
  찾기 do |index|
    (index[이름] == keys_or_name) || (index[] == normalize_keys(keys_or_name))
  end
end