Clase: Mongo::Index::View

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
Enumerable, Cursor::NonTailable, CursorHost, Reintentable
Definido en:
lib/mongo/index/view.rb

Overview

Una clase que representa una vista de índices.

Desde:

  • 2.0.0

Colapso delresumen constante

CLAVE =

El campo de clave de índice.

Desde:

  • 2.0.0

'key'.freeze
NOMBRE =

El campo de nombre de índice.

Desde:

  • 2.0.0

'nombre '.freeze
OPCIONES =

Las asignaciones de las opciones de índice de Ruby a las opciones del servidor.

Desde:

  • 2.0.0

{
  :fondo => :fondo,
  :bits => :bits,
  :tamaño del cubo => :tamaño del cubo,
  :idioma predeterminado => :idioma predeterminado,
  :caduca después de => :expireAfterSeconds,
  :caduca después de segundos => :expireAfterSeconds,
  :llave => :llave,
  :anulación del idioma => :anulación del idioma,
  :máximo => :máximo,
  :min => :min,
  :nombre => :nombre,
  :expresión_de_filtro_parcial => :expresióndefiltroparcial,
  :sparse => :sparse,
  :versión_esfera => :'2dsphereIndexVersion',
  :motor de almacenamiento => :motor de almacenamiento,
  :versión_de_texto => :textIndexVersion,
  :unique => :unique,
  :versión => :v,
  :pesos => :pesos,
  :colación => :colación,
  :comment => :comment,
  :proyección_comodín => :proyección comodín,
}.freeze

Colapso delresumen de atributos de instancia

Atributos incluidos desde CursorHost

#cursor, #timeout_mode

Colapso del resumen del método de instancia

Métodos incluidos en Cursor::NonTailable

#cursor_type, #timeout_mode

Métodos incluidos desde CursorHost

#validate_timeout_mode!

Métodos incluidos en Retryable

#trabajador_de_lectura, #servidor_de_selección, #trabajador_de_escritura

Detalles del constructor

#inicializar(colección, opciones = {}) ⇒ Ver

Crear la nueva vista de índice.

Ejemplos:

Crear la nueva vista de índice.

View::Index.new(collection)

Parámetros:

  • Colección (Recopilación) -

    La colección.

  • opciones (Hash) (predeterminado: {})

    Opciones para obtener una lista de índices.

Opciones Hash(opciones):

  • :tamaño_del_lote (Entero)

    El tamaño del lote de los resultados devueltos por el comando listIndexes.

  • :timeout_mode (:tiempo de vida del cursor |:iteración)

    Cómo interpretar :timeout_ms (si se aplica a la vida útil del cursor o por iteración).

  • :tiempo de espera_ms (Entero)

    El tiempo de espera de la operación en milisegundos. Debe ser un número entero no negativo. Un valor explícito de 0 significa infinito. El valor por defecto no está establecido, lo que significa que se hereda de la colección, la base de datos o el cliente.

Desde:

  • 2.0.0



318
319
320
321
322
323
324
325
326
# Archivo 'lib/mongo/index/view.rb', línea 318

def inicializar(Colección, opciones = {})
  @recopilación = Colección
  @tiempo_de_espera_de_operación_ms = opciones.borrar(:tiempo de espera_ms)

  validate_timeout_mode!(opciones)

  @tamaño_de_lote = opciones[:tamaño_del_lote]
  @opciones = opciones
end

Detalles de los atributos de instancia

#batch_sizeEntero (solo lectura)

Devuelve batch_size El tamaño del lote de resultados al enviar el comando listIndexes.

Devuelve:

  • (Entero)

    batch_size El tamaño del lote de resultados al enviar el comando listIndexes.

Desde:

  • 2.0.0



38
39
40
# Archivo 'lib/mongo/index/view.rb', línea 38

def tamaño del lote
  @tamaño_de_lote
end

#colecciónColección (solo lectura)

Retorna colección, la colección de índices.

Devuelve:

Desde:

  • 2.0.0



34
35
36
# Archivo 'lib/mongo/index/view.rb', línea 34

def Colección
  @recopilación
end

#operation_timeout_msEntero | nulo | El valor de timeout_ms que se pasó como opción a la vista. (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve un entero | nulo | El valor timeout_ms que se pasó como opción a la vista.

Devuelve:

  • (Entero| nulo | El valor de timeout_ms que se pasó como opción a la vista).

    Entero | nulo | El valor timeout_ms que se pasó como opción a la vista.

Desde:

  • 2.0.0



44
45
46
# Archivo 'lib/mongo/index/view.rb', línea 44

def tiempo de espera de operación_ms
  @tiempo_de_espera_de_operación_ms
end

Detalles del método de instancia

#create_many(*models) ⇒ Resultado

Nota:

En MongoDB 3.0.0 y superiores, los índices se crearán en paralelo en el servidor.

Crea múltiples índices en la colección.

Ejemplos:

Crear múltiples índices.

view.create_many([
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true }
])

Crear múltiples índices con opciones.

view.create_many(
  { key: { name: 1 }, unique: true },
  { key: { age: -1 }, background: true },
  { commit_quorum: 'majority' }
)

Parámetros:

  • modelos (Matriz<Hash>)

    Especificaciones del índice. Cada modelo DEBE incluir una opción :key, excepto el último elemento del array, que puede ser un hash que especifique las opciones relevantes para la operación createIndexes. Se aceptan las siguientes opciones:

    • commit_quorum: Especifica cuántos miembros de un conjunto de réplicas que contienen datos, incluido el principal, deben completar correctamente la compilación de índices antes de que el principal los marque como listos. Los valores posibles son:

      • un entero desde 0 hasta el número de miembros del conjunto de réplicas

      • “mayoría” indica que la mayoría de los nodos portadores de datos deben votar

      • “votingMembers”, lo que significa que todos los nodos que contienen datos de votación deben votar

    • sesión: La sesión a utilizar.

    • comentario: Un comentario proporcionado por el usuario para adjuntar a este comando.

Devuelve:

  • (Result)

    El resultado del comando.

Desde:

  • 2.0.0



216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
# Archivo 'lib/mongo/index/view.rb', línea 216

def crear_muchos(*modelos)
  modelos = modelos.aplanar
  opciones = {}
  Si modelos && !modelos.última.key?(:llave)
    opciones = modelos.pop
  end

  Cliente.con_sesión(@opciones.unir(opciones)) hacer |sesión|
    Server = siguiente_primaria(nulo, sesión)

    indexes = normalizar_modelos(modelos, Server)
    indexes.cada hacer |index|
      Si index[:tamaño del cubo] || index['tamaño del cubo ']
        Cliente.advertencia de registro(Los índices Haystack (opción de índice bucketSize) están desaprobados a partir de MongoDB 4.4)
      end
    end

    especulación = {
      indexes: indexes,
      nombre_base_datos: database.Nombre,
      nombre_coll: Colección.Nombre,
      sesión: sesión,
      quórum de confirmación: opciones[:cuórum de compromiso],
      escribir_preocupación: escribir_preocupación,
      comment: opciones[:comment],
    }
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      tiempos de espera de operación: tiempos de espera de operación(opciones)
    )
    Operación::CreateIndex.Nuevo(especulación).ejecutar(Server, context: context)
  end
end

#create_one(claves, opciones = {}) ⇒ Result

Nota:

Tenga en cuenta que las opciones enumeradas pueden ser un subconjunto de las disponibles.

Crea un índice en la colección.

Consulte la documentación de MongoDB para obtener una lista completa de las opciones compatibles según la versión del servidor.

Ejemplos:

Crear un índice único en la colección.

view.create_one({ name: 1 }, { unique: true })

Parámetros:

  • claves (Hash)

    Un hash de pares de nombre de campo/dirección.

  • opciones (Hash) (predeterminado: {})

    Opciones para este índice.

Opciones Hash(opciones):

  • :unique (verdadero,falso) — valor predeterminado: falso

    Si es verdadero, este índice impondrá una restricción de unicidad en ese campo.

  • :fondo (verdadero,falso) — valor predeterminado: falso

    Si es verdadero, el índice se creará en segundo plano (solo disponible para versiones de servidor >= 1.3.2 )

  • :drop_dups (verdadero,falso) — valor predeterminado: falso

    Si se crea un índice único en esta colección, esta opción conservará el primer documento que indexa la base de datos y eliminará todos los documentos posteriores con valores duplicados en este campo.

  • :tamaño del cubo (Entero) — default: nil

    Para usar con índices geoHaystack. Número de documentos que se agruparán con una proximidad específica a una longitud y latitud determinadas.

  • :máximo (Entero) — default: nil

    Especifique la latitud y longitud máximas para un índice geográfico.

  • :min (Entero) — default: nil

    Especifique la latitud y longitud mínimas para un índice geográfico.

  • :expresión_de_filtro_parcial (Hash)

    Especifique un filtro para un índice parcial.

  • :hidden (Booleano)

    Cuando :hidden es verdadero, este índice existirá en la colección pero el planificador de consultas no lo utilizará al ejecutar operaciones.

  • :cuórum de compromiso (String | Integer)

    Especifique cuántos miembros de un conjunto de réplicas que contienen datos, incluido el principal, deben completar correctamente la creación de índices antes de que el principal los marque como listos. Los valores potenciales son:

    • un entero desde 0 hasta el número de miembros del conjunto de réplicas

    • “mayoría” indica que la mayoría de los nodos portadores de datos deben votar

    • “votingMembers”, lo que significa que todos los nodos que contienen datos de votación deben votar

  • :sesión (Sesión)

    La sesión que se utilizará para la operación.

  • :comment (Objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

Devuelve:

  • (Result)

    La respuesta.

Desde:

  • 2.0.0



167
168
169
170
171
172
173
174
175
176
177
178
179
180
# Archivo 'lib/mongo/index/view.rb', línea 167

def crear_uno(claves, opciones = {})
  opciones = opciones.dup

  create_options = {}
  Si sesión = @opciones[:sesión]
    create_options[:sesión] = sesión
  end
  %i(commit_quorum sesión comment tiempo de espera_ms tiempo máximo_ms).cada hacer |clave|
    Si valor = opciones.borrar(clave)
      create_options[clave] = valor
    end
  end
  crear_muchos({ llave: claves }.unir(opciones), create_options)
end

#drop_all(opciones = {}) ⇒ Resultado

Eliminar todos los índices de la colección.

Ejemplos:

Eliminar todos los índices de la colección.

view.drop_all

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Opciones para esta operación.

Opciones Hash(opciones):

  • :comment (Objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

Devuelve:

  • (Result)

    La respuesta.

Desde:

  • 2.0.0



119
120
121
# Archivo 'lib/mongo/index/view.rb', línea 119

def soltar_todo(opciones = {})
  dejar_por_nombre(Index::TODOS, opciones)
end

#drop_one(nombre, opciones = {}) ⇒ Resultado

Eliminar un índice por su nombre.

Ejemplos:

Eliminar un índice por su nombre.

view.drop_one('name_1')

Parámetros:

  • Nombre (Cadena) -

    El nombre del índice.

  • opciones (Hash) (predeterminado: {})

    Opciones para esta operación.

Opciones Hash(opciones):

  • :comment (Objeto)

    Un comentario proporcionado por el usuario para adjuntar a este comando.

Devuelve:

  • (Result)

    La respuesta.

Aumentos:

  • (Error::MultiIndexDrop)

Desde:

  • 2.0.0



101
102
103
104
# Archivo 'lib/mongo/index/view.rb', línea 101

def soltar uno(Nombre, opciones = {})
  propagar Error::MultiIndexDrop.Nuevo Si Nombre == Index::TODOS
  dejar_por_nombre(Nombre, opciones)
end

#cada(&bloque) ⇒ Objeto

Iterar sobre todos los índices de la colección.

Ejemplos:

Obtenga todos los índices.

view.each do |index|
  ...
end

Desde:

  • 2.0.0



279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# Archivo 'lib/mongo/index/view.rb', línea 279

def cada(Ybloque)
  sesión = Cliente.obtener_sesión(@opciones)
  context = Operación::Context.Nuevo(
    cliente: Cliente,
    sesión: sesión,
    tiempos de espera de operación: tiempos de espera de operación(@opciones)
  )

  cursor = lectura con cursor de reintento(sesión, Selector de servidor.primario, yo, context: context) hacer |Server|
    enviar_consulta_inicial(Server, sesión, context)
  end
  Si ¿bloque_dado?
    cursor.cada hacer |doc|
      rendimiento doc
    end
  else
    cursor.to_enum
  end
end

#obtener(claves_o_nombre) ⇒ Hash

Método conveniente para obtener información de índices por un nombre o especificación específica.

Ejemplos:

Obtener información del índice por nombre.

view.get('name_1')

Obtener información del índice mediante las claves.

view.get(name: 1)

Parámetros:

  • llaves_o_nombre (Hash, Cadena)

    El nombre del índice o especificación.

Devuelve:

  • (Hash)

    La información del índice.

Desde:

  • 2.0.0



265
266
267
268
269
# Archivo 'lib/mongo/index/view.rb', línea 265

def Obtener(llaves_o_nombre)
  buscar hacer |index|
    (index[NOMBRE] == llaves_o_nombre) || (index[KEY] == normalizar_claves(llaves_o_nombre))
  end
end

#tiempos_de_espera_de_operación(opciones = {}) ⇒ Hash

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor timeout_ms establecido en el nivel de operación (si lo hay) y/o el timeout_ms establecido en el nivel de colección/base de datos/cliente (si lo hay).

Devuelve:

  • (Hash)

    valor timeout_ms establecido en el nivel de operación (si lo hay) y/o timeout_ms establecido en el nivel de recopilación/base de datos/cliente (si lo hay).

Desde:

  • 2.0.0



340
341
342
343
344
345
346
347
348
# Archivo 'lib/mongo/index/view.rb', línea 340

def tiempos de espera de operación(opta = {})
  {}.grifo hacer |resultado|
    Si opta[:tiempo de espera_ms] || tiempo de espera de operación_ms
      resultado[:tiempo de espera_de_operación_ms] = opta.borrar(:tiempo de espera_ms) || tiempo de espera de operación_ms
    else
      resultado[:tiempo de espera heredado_ms] = Colección.tiempo de espera_ms
    end
  end
end

#timeout_msInteger | nil

El valor timeout_ms que se utilizará para esta operación, ya sea especificado como una opción para la vista o heredado de la colección.

Devuelve:

  • (Integer | nil)

    el tiempo de espera_ms para esta operación

Desde:

  • 2.0.0



332
333
334
# Archivo 'lib/mongo/index/view.rb', línea 332

def tiempo de espera_ms
  tiempo de espera de operación_ms || Colección.tiempo de espera_ms
end