Módulo: Mongoid::Indexable::ClassMethods

Definido em:
lib/mongoid/indexable.rb

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#add_indexes ➤ true

Adicione os índices padrão ao documento raiz se eles ainda não existirem. Atualmente, é apenas _type.

Exemplos:

Adicione índices internos do Mongoid.

Person.add_indexes

Retorna:

  • (verdadeiro)

    Se a operação foi bem-sucedida.



72
73
74
75
76
77
# Arquivo 'lib/mongoid/indexable.rb', linha 72

def add_indexes
  se hereditário? && !index_keys.incluir?(discriminator_key.to_sym => 1)
    index({ discriminator_key.to_sym => 1 }, unique: false, background: true)
  end
  true
end

#create_indexes ➤ true

Enviar os comentários de criação do índice real para o driver do MongoDB

Exemplos:

Crie os índices para a classe.

Person.create_indexes

Retorna:

  • (verdadeiro)

    Se a operação foi bem-sucedida.



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Arquivo 'lib/mongoid/indexable.rb', linha 24

def create_indexes
  Método a menos que index_specifications

  default_options = { background: Config.background_indexing }

  index_specifications.cada fazer |especificações|
    chave, opções = especificações.chave, default_options.mesclar(especificações.opções)
    se database = opções[:database]
      com(database: database) fazer |classe|
        classe.collection.Índices(sessão: _session).create_one(chave, opções.exceto(:database))
      end
    mais
      collection.Índices(sessão: _session).create_one(chave, opções)
    end
  end e a true
end

#index(spec, options = nil) ⇒ Hash

Adiciona uma definição de índice para as chaves únicas ou compostas fornecidas.

Exemplos:

Crie um índice básico.

class Person
  include Mongoid::Document
  field :name, type: String
  index({ name: 1 }, { background: true })
end

Parâmetros:

  • especificações (Hash)

    A especificação do índice.

  • opções (Hash) (padrão para: nil)

    As opções de índice.

Retorna:

  • (Hash)

    As opções de índice.



92
93
94
95
96
97
98
99
100
101
102
103
# Arquivo 'lib/mongoid/indexable.rb', linha 92

def index(especificações, opções = nada)
  Especificação = Especificação.Novo(auto, especificações, opções)

  # o teste de igualdade para instâncias Indexable::Specification não
  # considere todas as opções, o que significa que os nomes não são comparados. Isso significa
  # que um índice com opções diferentes de outro, e uma
  # nome, será silenciosamente ignorado a menos que declarações de índice duplicadas
  # são permitidos.
  Método a menos que Mongoid.allow_duplicate_index_declarations || !index_specifications.incluir?(Especificação)

  index_specifications.push(Especificação)
end

#index_specification(index_hash, index_name = nil) ➤ Especificação

Obtenha uma especificação de índice para a chave fornecida.

Exemplos:

Obtenha a especificação do índice.

Model.index_specification(name: 1)

Parâmetros:

  • index_hash (Hash)

    O par chave/direção do índice.

  • index_name (string) (padrão para: nil)

    O nome do índice.

Retorna:

  • (Especificação)

    A especificação encontrada.



114
115
116
117
118
# Arquivo 'lib/mongoid/indexable.rb', linha 114

def index_specificação(index_hash, index_name = nada)
  index_specifications.detectar fazer |especificações|
    especificações.superficial_match?(chave: index_hash, nome: index_name)
  end
end

#remove_indexes ➤ true

Envie os comentários reais da remoção do índice para o driver do MongoDB , mas deixa _id intocado.

Exemplos:

Remova os índices da classe.

Person.remove_indexes

Retorna:

  • (verdadeiro)

    Se a operação foi bem-sucedida.



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Arquivo 'lib/mongoid/indexable.rb', linha 48

def remove_indexes
  indexed_database_names.cada fazer |database|
    com(database: database) fazer |classe|
      classe.collection.Índices(sessão: _session).cada fazer |especificações|
        próximo se especificações['nome'] == '_id_'

        classe.collection.Índices(sessão: _session).drop_one(especificações['key'])
        logger.informações(
          "MONGOID: removido índice '#{spec['name']}' na coleção " +
          "'#{klass.collection.name}' in banco de dados '#{banco de dados}'."
        )
      end
    salvar mongo::Erro::Falha de operação
    end
  end e a true
end