모듈: Mongoid::Shardable::ClassMethods

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

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#shard_key(*args) ⇒ 객체

필드 가 지정된 샤드 키 를 지정합니다.

예시:

샤드 키 를 지정합니다.


class Person
  include Mongoid::Document
  field :first_name, :type => String
  field :last_name, :type => String

  shard_key first_name: 1, last_name: 1
end

다음을 발생시킵니다.

  • (ArgumentError)


117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# 파일 'lib/mongoid/shardable.rb', 줄 117

def shard_key(*args)
  하지 않는 한 args.first.is_a?(해시)
    # 약식 구문
    올리다 ArgumentError, '축약형 shard_key 구문은 옵션을 허용하지 않습니다. ' 만약 args.last.is_a?(해시)

    사양 = 해시[args.map do |이름|
      [ 이름, 1 ]
    end]

    반환 shard_key(사양)
  end

  올리다 ArgumentError, '전체 shard_key 구문에는 1 또는 2 인수가 필요합니다. ' 만약 args.분량 > 2

  사양, 옵션 = args

  사양 = 해시[사양.map do |이름, value|
    value = value.to_s 만약 value.is_a?(기호)
    [ database_field_name(이름).to_sym, value ]
  end]

  self.shard_key_fields = 사양.
  self.shard_config = {
    키: 사양.동결,
    옵션: (옵션 || {}).dup.동결
  }.동결
end