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

Aumenta:

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

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

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

    Método shard_key(especificações)
  end

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

  especificações, opções = Args

  especificações = Hash[especificações.map fazer |name, valor|
    valor = valor.to_s se valor.is_a?(Símbolo)
    [ 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