모듈: Mongoid::Indexable::ClassMethods

다음에 정의됨:
lib/mongoid/indexable.rb

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#add_indexestrue

기본값 인덱스가 아직 존재하지 않는 경우 루트 문서 에 추가합니다. 현재 이는 _type뿐입니다.

예시:

Mongoid 내부 인덱스를 추가합니다.

Person.add_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



72
73
74
75
76
77
# 파일 'lib/mongoid/indexable.rb', 72줄

def add_indexes
  만약 유전? && !index_keys.포함?(판별자_키.to_sym => 1)
    index({ 판별자_키.to_sym => 1 }, unique: 거짓, 배경: true)
  end
  true
end

#create_indexestrue

실제 인덱스 생성 주석을 MongoDB 드라이버에 보냅니다.

예시:

클래스에 대한 인덱스를 생성합니다.

Person.create_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 파일 'lib/mongoid/indexable.rb', 24줄

def create_indexes
  반환 하지 않는 한 index_specations

  default_options = { 배경: Config.background_indexing }

  index_specations. do |사양|
    , 옵션 = 사양., default_options.merge(사양.옵션)
    만약 database = 옵션[:database]
      (database: database) do |class|
        class.컬렉션.인덱스(세션: _session).create_one(, 옵션.~을 제외하고(:database))
      end
    other
      컬렉션.인덱스(세션: _session).create_one(, 옵션)
    end
  end 개인정보 정책에 true
end

#index(spec, options = nil) ⇒ Hash

제공된 단일 또는 복합 키에 대한 인덱스 정의를 추가합니다.

예시:

기본 인덱스 를 만듭니다.

class Person
  include Mongoid::Document
  field :name, type: String
  index({ name: 1 }, { background: true })
end

매개변수:

  • 사양 (해시)

    인덱스 사양입니다.

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

    인덱스 옵션.

반환합니다:

  • (해시)

    인덱스 옵션.



92
93
94
95
96
97
98
99
100
101
102
103
# 파일 'lib/mongoid/indexable.rb', 92줄

def index(사양, 옵션 = nil)
  사양 = 사양.신규(self, 사양, 옵션)

  # Indexable::Specification 인스턴스에 대한 동등성 테스트는
  # 모든 옵션을 고려하므로 이름이 비교되지 않습니다. 이는 다음을 의미합니다.
  # 인덱스 이 다른 인덱스와
  # 이름, 중복 인덱스 선언이 없는 한 자동으로 무시됩니다.
  # 허용됩니다.
  반환 하지 않는 한 몽고이드.allow_duplicate_index_declarations || !index_specations.포함?(사양)

  index_specations.push(사양)
end

#index_specation(index_hash, index_name = nil) ⇒ 사양

제공된 키에 대한 인덱스 사양을 가져옵니다.

예시:

인덱스 사양을 가져옵니다.

Model.index_specification(name: 1)

매개변수:

  • index_hash (해시)

    인덱스 키/방향 쌍입니다.

  • index_name (string) (기본값: nil)

    인덱스 이름입니다.

반환합니다:

  • (사양)

    발견된 사양입니다.



114
115
116
117
118
# 파일 'lib/mongoid/indexable.rb', 114줄

def index_specation(index_hash, index_name = nil)
  index_specations.감지 do |사양|
    사양.superficial_match?(키: index_hash, 이름: index_name)
  end
end

#remove_indexestrue

실제 인덱스 제거 코멘트를 MongoDB 운전자 에 전송하되, _id 는 그대로 유지합니다.

예시:

클래스의 인덱스를 제거합니다.

Person.remove_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 파일 'lib/mongoid/indexable.rb', 48줄

def remove_indexes
  indexed_database_names. do |database|
    (database: database) do |class|
      class.컬렉션.인덱스(세션: _session). do |사양|
        다음 만약 사양['name'] == '_id_'

        class.컬렉션.인덱스(세션: _session).drop_one(사양['key'])
        로거.정보(
          "MONGOID: 컬렉션 에서'#{spec['name']}'인덱스 제거" +
          "'#{klass.컬렉션.name}' 데이터베이스 '#{데이터베이스}'."
        )
      end
    구출 mongo::오류::OperationFailure
    end
  end 개인정보 정책에 true
end