模块: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
# File 'lib/mongoid/shardable.rb', line 117

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

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

    return shard_key(spec)
  end

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

  spec, 选项 = args

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

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