Módulo: Mongoid::Shardable::ClassMethods

Definido em:
lib/mongoid/shardable.rb

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#shard_key(*args) ➤ Objeto

Especifica uma chave de shard com o(s) campo(s) especificado(s).

Exemplos:

Especifique a chave de fragmento.


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
# Arquivo 'lib/mongoid/shardable.rb', linha 120

def shard_key(*Args)
  a menos que Args.primeiro.is_a?(Hash)
    # Sintaxe de abreviação
    se Args.último.is_a?(Hash)
      aumentar ArgumentError, 'A sintaxe de shard_key de abreviação não permite opções'
    end

    especificações = Hash[Args.map fazer |name|
      [name, 1]
    end]

    Método shard_key(especificações)
  end

  se Args.Tamanho > 2
    aumentar ArgumentError, 'A sintaxe completa do shard_key requer argumentos 1 ou 2 '
  end

  especificações, opções = Args

  especificações = Hash[especificações.map fazer |name, valor|
    se valor.is_a?(Símbolo)
      valor = valor.to_s
    end
    [database_field_name(name).to_sym, valor]
  end]

  auto.shard_key_fields = especificações.keys
  auto.shard_config = {
    chave: especificações.congelar,
    opções: (opções || {}).dup.congelar,
  }.congelar
end