模块: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


120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# File 'lib/mongoid/shardable.rb', line 120

def shard_key(*args)
  除非 args.first.is_a?(哈希)
    # 速记语法
    if args.last.is_a?(哈希)
      提高 ArgumentError, '速记 shard_key 语法不允许使用选项'
    end

    spec = 哈希[args.map do |名称|
      [名称, 1]
    end]

    return shard_key(spec)
  end

  if args.长度 > 2
    提高 ArgumentError, '完整的 shard_key 语法需要1或2参数'
  end

  spec, 选项 = args

  spec = 哈希[spec.map do |名称, |
    if .is_a?(符号)
       = .to_s
    end
    [database_field_name(名称).to_sym, ]
  end]

  self.shard_key_fields = spec.密钥
  self.shard_config = {
    键: spec.冻结,
    选项: (选项 || {}).dup.冻结,
  }.冻结
end