모듈: Mongoid::Indexable::ClassMethods

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

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#add_indexestrue

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

예시:

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

Person.add_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



76
77
78
79
80
81
# 파일 'lib/mongoid/indexable.rb', 76줄

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

#create_indexestrue

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

예시:

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

Person.create_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



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

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)

    인덱스 옵션.

반환합니다:

  • (해시)

    인덱스 옵션.



96
97
98
99
100
101
# 파일 'lib/mongoid/indexable.rb', 96줄

def index(사양, 옵션 = nil)
  사양 = 사양.신규(self, 사양, 옵션)
  만약 !index_specations.포함?(사양)
    index_specations.push(사양)
  end
end

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

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

예시:

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

Model.index_specification(name: 1)

매개변수:

  • index_hash (해시)

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

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

    인덱스 이름입니다.

반환합니다:

  • (사양)

    발견된 사양입니다.



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

def index_specation(index_hash, index_name = nil)
  index = OpenStruct.신규(필드: index_hash., 키: index_hash)
  index_specations.감지 do |사양|
    사양 == index || (index_name && index_name == 사양.이름)
  end
end

#remove_indexestrue

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

예시:

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

Person.remove_indexes

반환합니다:

  • (true)

    작업이 성공한 경우.



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 파일 'lib/mongoid/indexable.rb', 51줄

def remove_indexes
  indexed_database_names. do |database|
    (database: database) do |class|
      시작
        class.컬렉션.인덱스(세션: _session). do |사양|
          하지 않는 한 사양["name"] == "_id_"
            class.컬렉션.인덱스(세션: _session).drop_one(사양[""])
            로거.정보(
              "MONGOID: 제거된 인덱스 '#{spec["name"]}  ' +
              "'#{klass.컬렉션.name}' 데이터베이스 '#{데이터베이스}'."
            )
          end
        end
      구출 mongo::오류::OperationFailure; end
    end
  end 개인정보 정책에 true
end