Módulo: Mongoid::Indexable::ClassMethods

Definido en:
lib/mongoid/indexable.rb

Resumen del método de instancia colapsar

Detalles del método de instancia

#add_indexestrue

Agregue los índices por defecto al documento raíz si aún no existen. Actualmente, esto es solo _type.

Ejemplos:

Agregar índices internos de Mongoid.

Person.add_indexes

Devuelve:

  • (cierto)

    Si la operación fue exitosa.



72
73
74
75
76
77
# Archivo 'lib/mongoid/indexable.rb', línea 72

def add_indexes
  si ¿hereditaria? && !índices_claves.incluir?(discriminador_clave.to_sym => 1)
    index({ discriminador_clave.to_sym => 1 }, unique: false, segundo plano: true)
  end
  true
end

#create_indexestrue

Enviar los comentarios reales de creación de índices al controlador de MongoDB

Ejemplos:

Crea los índices para la clase.

Person.create_indexes

Devuelve:

  • (cierto)

    Si la operación fue exitosa.



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

def create_indexes
  return a menos que especificaciones_del_índice

  default_options = { segundo plano: Config.indexación de fondo }

  especificaciones_del_índice.cada hacer |especificación|
    llave, opciones = especificación.llave, default_options.fusionar(especificación.opciones)
    si database = opciones[:database]
      con(database: database) hacer |klass|
        klass.Colección.indexes(sesión: _sesión).create_one(llave, opciones.excepto(:database))
      end
    else
      Colección.indexes(sesión: _sesión).create_one(llave, opciones)
    end
  end y  true
end

#index(spec, options = nil) ⇒ Hash

Agrega una definición de índice para las claves individuales o compuestas proporcionadas.

Ejemplos:

Crear un índice básico.

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

Parámetros:

  • especificación (encriptada)

    La especificación del índice.

  • opciones (encriptada) (valor por defecto: nil)

    Las opciones de índices.

Devuelve:

  • (encriptada)

    Las opciones de índices.



92
93
94
95
96
97
98
99
100
101
102
103
# Archivo 'lib/mongoid/indexable.rb', línea 92

def index(especificación, opciones = nulo)
  Especificación = Especificación.Nuevo(sí mismo, especificación, opciones)

  # la prueba de igualdad para las instancias de Indexable::Specification no
  # considerar cualquier opción, lo que significa que los nombres no se comparan. Esto significa
  # que un índice con diferentes opciones a otro, y un diferente
  # nombre, será ignorado en silencio a menos que haya declaraciones de índices duplicados
  # están permitidos.
  return a menos que Mongoid.permitir_declaraciones_de_índice_duplicadas || !especificaciones_del_índice.incluir?(Especificación)

  especificaciones_del_índice.push(Especificación)
end

#index_specification(index_hash, index_name = nil) ⇒ Specification

Obtén una especificación de índice para la clave proporcionada.

Ejemplos:

Obtener la especificación del índice.

Model.index_specification(name: 1)

Parámetros:

  • index_hash (encriptada)

    El par clave/dirección del índice.

  • index_name (string) (valor por defecto: nil)

    El nombre del índice.

Devuelve:

  • (Especificación)

    La especificación encontrada.



114
115
116
117
118
# Archivo 'lib/mongoid/indexable.rb', línea 114

def index_specification(index_hash, index_name = nulo)
  especificaciones_del_índice.detectar hacer |especificación|
    especificación.superficial_match?(clave: index_hash, nombre: index_name)
  end
end

#remove_indexestrue

Envía los comentarios reales de eliminación de índices al controlador de MongoDB, pero deja _id sin modificar.

Ejemplos:

Remover los índices de la clase.

Person.remove_indexes

Devuelve:

  • (cierto)

    Si la operación fue exitosa.



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

def remove_indexes
  indexed_database_names.cada hacer |database|
    con(database: database) hacer |klass|
      klass.Colección.indexes(sesión: _sesión).cada hacer |especificación|
        Next si especificación['nombre'] == '_id_'

        klass.Colección.indexes(sesión: _sesión).drop_one(especificación['key'])
        logger.información(
          "MONGOID: Índice eliminado '#{spec['nombre']}' en la colección " +
          "'#{klass.collection.name}'' en la base de datos '#{database}'."
        )
      end
    rescate mongo::Error::OperationFailure
    end
  end y  true
end