Clase: Mongo::índice::View

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

Overview

Una clase que representa una vista de índices.

Desde:

  • 2.0.0

Resumen de constantes colapsar

CLAVE =

El campo de clave de índice.

Desde:

  • 2.0.0

'llave'
NAME =

El campo del nombre del índice.

Desde:

  • 2.0.0

'Nombre'
OPCIONES =

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

Desde:

  • 2.0.0

{
  segundo plano: segundo plano,
  bits: bits,
  bucket_size: TamañoDelCubo,
  default_language: idioma_predeterminado,
  expire_after: expireAfterSeconds,
  expirar_despues_de_segundos: expireAfterSeconds,
  clave: :clave,
  language_override: :language_override,
  máx.: max:,
  min: :min,
  nombre: nombre,
  partial_filter_expression: partialFilterExpression,
  sparse: :sparse,
  sphere_version: :'2dsphereIndexVersion',
  storage_engine: :storageEngine,
  versión_texto: :textIndexVersion,
  unique: :unique,
  versión: :v,
  pesos: :pesas,
  intercalación: intercalación,
  comment: :comment,
  proyección comodín: wildcardProjection,
}.freeze

Resumen de atributos de la instancia colapsar

Atributos incluidos de CursorHost

#cursor, #timeout_mode

Resumen del método de instancia colapsar

Métodos incluidos desde Cursor::NonTailable

#cursor_type, #timeout_mode

Métodos incluidos desde CursorHost

#validate_timeout_mode!

Métodos incluidos de Retryable

#read_worker, #select_server, #with_overload_retry, #write_worker

Detalles del Constructor

#initialize(colección, options = {}) ⇒ Ver

Crea la nueva vista del índice.

Ejemplos:

Crea la nueva vista del índice.

View::Index.new(collection)

Parámetros:

  • Colección (colección)

    La colección.

  • opciones (encriptada) (por defecto: {})

    Opciones para obtener una lista de índices.

Opciones Hash (options):

  • :batch_size (Integer)

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

  • :timeout_mode (:cursor_lifetime | :iteration)

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

  • :timeout_ms (Integer)

    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/índice/view.rb', línea 318

def inicializar(Colección, opciones = {})
  @colección = Colección
  @operation_timeout_ms = opciones.borrar(:timeout_ms)

  validate_timeout_mode!(opciones)

  @batch_size = opciones[:batch_size]
  @options = opciones
end

Detalles de atributo de instancias

#batch_sizeInteger (solo lectura)

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

Devuelve:

  • (Número entero)

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

Desde:

  • 2.0.0



36
37
38
# Archivo 'lib/mongo/índice/view.rb', línea 36

def batch_size
  @batch_size
end

#colecciónColección (solo lectura)

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

Devuelve:

  • (colección)

    colección La colección de índices.

Desde:

  • 2.0.0



32
33
34
# Archivo 'lib/mongo/índice/view.rb', línea 32

def Colección
  @colección
end

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

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

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

Devuelve:

  • (Integer | nil | timeout_ms valor pasado como una opción a la vista.)

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

Desde:

  • 2.0.0



42
43
44
# Archivo 'lib/mongo/índice/view.rb', línea 42

def operation_timeout_ms
  @operation_timeout_ms
end

Detalles del método de instancia

#create_many(*models) ⇒ Resultado

Crea varios índices en la colección.

Ejemplos:

Crea múltiples índices.

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

Crea varios índices con opciones.

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

Parámetros:

  • modelos (arreglo<Hash>)

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

    • commit_quorum: Especifica cuántos miembros portadores de datos de un set de réplicas, incluido el primario, deben completar correctamente la creación de índices antes de que el primario marque los índices como listos. Los valores potenciales son:
      • un entero desde 0 hasta el número de miembros del set de réplicas
      • "mayoría" indicando que una mayoría de nodos portadores de datos debe votar
      • "votingMembers" que significa que todos los nodos portadores de 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



213
214
215
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/índice/view.rb', línea 213

def create_many(*modelos)
  modelos = modelos.nivelar
  opciones = {}
  opciones = modelos.pop si modelos && !modelos.último.key?(:clave)

  Cliente.con_sesión(@options.fusionar(opciones)) hacer |sesión|
    indexes = normalize_models(modelos)
    indexes.cada hacer |index|
      si index[TamañoDelCubo] || index['bucketSize']
        Cliente.log_warn('Los índices de Haystack (opción de índice bucketSize) están obsoletos a partir de MongoDB 4.4')
      end
    end

    especificación = {
      indexes: indexes,
      db_name: database.Nombre,
      coll_name: Colección.Nombre,
      sesión: sesión,
      commit_quorum: opciones[:commit_quorum],
      write_concern: write_concern,
      comment: opciones[:comment],
    }
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      operation_timeouts: operation_timeouts(opciones)
    )
    Operación = Operación::CreateIndex.Nuevo(especificación)
    trazador.trace_operation(Operación, context, op_name: 'createIndexes') hacer
      retry_enabled = Colección.Cliente.opciones[retry_writes] != false
      con_reintento_por_sobrecarga(context: context, retry_enabled: retry_enabled) hacer
        Server = siguiente_principal(nulo, sesión)
        Operación.ejecutar(Server, context: context)
      end
    end
  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.

Consulta la documentación de MongoDB para obtener una lista completa de las opciones admitidas por versión de servidor.

Ejemplos:

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

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

Parámetros:

  • claves (encriptada)

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

  • opciones (encriptada) (por defecto: {})

    Opciones para este índice.

Opciones Hash (options):

  • :unique (verdadero, falso) — por defecto: false

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

  • segundo plano (verdadero, falso) — por defecto: false

    Si es cierto, el índice se creará en segundo plano

  • :eliminar_duplicados (verdadero, falso) — por defecto: false

    Si está creando un índice único en esta colección, esta opción mantendrá el primer documento que la base de datos indexe y descartará todos los documentos posteriores con valores duplicados en este campo.

  • bucket_size (Integer) — default: nil

    Para usar con índices geoHaystack. Número de documentos a agrupar dentro de una cierta proximidad a una determinada longitud y latitud.

  • max: (Integer) — default: nil

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

  • :min (Integer) — default: nil

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

  • partial_filter_expression (encriptada)

    Especifica un filtro para un índice parcial.

  • :hidden (booleano)

    Cuando :hidden es verdadero, este índice existirá en la colección pero no será utilizado por el planificador de query al ejecutar operaciones.

  • :commit_quorum (String | Integer)

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

    • un entero desde 0 hasta el número de miembros del set de réplicas
    • "mayoría" indicando que una mayoría de nodos portadores de datos debe votar
    • "votingMembers" que significa que todos los nodos portadores de datos de votación deben votar
  • :: sesión (Sesión)

    La sesión a 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/índice/view.rb', línea 167

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

  create_options = {}
  si sesión = @options[:: sesión]
    create_options[:: sesión] = sesión
  end
  %i[commit_quorum sesión comment timeout_ms max_time_ms].cada hacer |llave|
    si Valor = opciones.borrar(llave)
      create_options[llave] = Valor
    end
  end
  create_many({ clave: claves }.fusionar(opciones), create_options)
end

#drop_all(options = {}) ⇒ Result

Descartar todos los índices de la colección.

Ejemplos:

Descartar todos los índices de la colección.

view.drop_all

Parámetros:

  • opciones (encriptada) (por defecto: {})

    Opciones para esta operación.

Opciones Hash (options):

  • :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/índice/view.rb', línea 119

def drop_all(opciones = {})
  descartar_por_nombre(Index::Todo, opciones)
end

#drop_one(name, options = {}) ⇒ Result

Elimine un índice por su nombre.

Ejemplos:

Elimine un índice por su nombre.

view.drop_one('name_1')

Parámetros:

  • Nombre (string)

    El nombre del índice.

  • opciones (encriptada) (por defecto: {})

    Opciones para esta operación.

Opciones Hash (options):

  • :comment (objeto)

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

Devuelve:

  • (Result)

    La respuesta.

Aumenta:

Desde:

  • 2.0.0



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

def drop_one(Nombre, opciones = {})
  propagar Error::MultiIndexDrop.Nuevo si Nombre == Index::Todo

  descartar_por_nombre(Nombre, opciones)
end

#each(&bloque) ⇒ Objeto

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

Ejemplos:

Obtener 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/índice/view.rb', línea 279

def cada(&bloque)
  sesión = Cliente.get_session(@options)
  context = Operación::Context.Nuevo(
    cliente: Cliente,
    sesión: sesión,
    operation_timeouts: operation_timeouts(@options)
  )
  op = initial_query_op(sesión)
  trazador.trace_operation(op, context, op_name: 'listIndexes') hacer
    cursor = leer_con_reintento_cursor(sesión, ServerSelector.primario, sí mismo, context: context) hacer |Server|
      send_initial_query(op, Server, sesión, context)
    end
    si ¿block_given?
      cursor.cada(&bloque)
    else
      cursor.to_enum
    end
  end
end

#get(keys_or_name) ⇒ Hash

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

Ejemplos:

Obtén información del índice por nombre.

view.get('name_1')

Obtener información del índice por las claves.

view.get(name: 1)

Parámetros:

  • claves o nombre (Hash, String)

    El nombre del índice o la especificación.

Devuelve:

  • (encriptada)

    La información del índice.

Desde:

  • 2.0.0



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

def Obtener(claves o nombre)
  buscar hacer |index|
    (index[Nombre] == claves o nombre) || (index[KEY] == normalize_keys(claves o nombre))
  end
end

#operation_timeouts(opts = {}) ⇒ Hash

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el valor de timeout_ms establecido a nivel de la operación (si lo hay), y/o timeout_ms que se establece a nivel de colección/base de datos/cliente (si lo hay).

Devuelve:

  • (encriptada)

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

Desde:

  • 2.0.0



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

def operation_timeouts(opciones = {})
  {}.tocar hacer |Resultado|
    si opciones[:timeout_ms] || operation_timeout_ms
      Resultado[:operation_timeout_ms] = opciones.borrar(:timeout_ms) || operation_timeout_ms
    else
      Resultado[timeout_inherente_ms] = Colección.timeout_ms
    end
  end
end

#timeout_msInteger | nil

El valor de timeout_ms que se utilizará para esta operación; se puede especificar como una opción para la vista o heredarse de la colección.

Devuelve:

  • (Integer | nil)

    el timeout_ms para esta operación

Desde:

  • 2.0.0



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

def timeout_ms
  operation_timeout_ms || Colección.timeout_ms
end