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

Colapso delresumen constante

CLAVE =

El campo de clave de índice.

Desde:

  • 2.0.0

'key'.freeze
NAME =

El campo del nombre del í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

{
  segundo plano => segundo plano,
  bits => bits,
  bucket_size => :tamaño del cubo,
  :idioma predeterminado => :idioma predeterminado,
  expire_after => expireAfterSeconds,
  :caduca después de segundos => expireAfterSeconds,
  :clave => :clave,
  :language_override => :language_override,
  :máximo => :máximo,
  :min => :min,
  nombre => nombre,
  partial_filter_expression => partialFilterExpression,
  :sparse => :sparse,
  :sphere_version => :'2dsphereIndexVersion',
  :motor de almacenamiento => :storageEngine,
  :versión_de_texto => :textIndexVersion,
  :unique => :unique,
  :versión => :v,
  :pesas => :pesas,
  :colación => :colación,
  :comment => :comment,
  :wildcard_projection => :proyección comodín,
}.freeze

Resumen de atributos de la instancia colapsar

Atributos incluidos desde 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 en Retryable

#read_worker, #select_server, #write_worker

Detalles del constructor

#inicializar(colección, opciones = {}) ⇒ 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 (Hash) (por defecto: {})

    Opciones para obtener una lista de índices.

Opciones Hash (options):

  • :batch_size (Entero)

    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 (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/í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 los atributos de instancia

#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



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

def tamaño del lote
  @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



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

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 forma parte de una API privada. Debe evitarlo 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 | nulo | El valor timeout_ms que se pasó como opción a la vista.

Desde:

  • 2.0.0



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

def operation_timeout_ms
  @operation_timeout_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 (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” indica que la mayoría de los nodos portadores de datos deben votar

      • "votingMembers" que significa que todos los nodos portadores de datos con derecho a voto 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/índice/view.rb', línea 216

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

  Cliente.con_sesión(@options.fusionar(opciones)) hacer |sesión|
    Server = siguiente_principal(nulo, sesión)

    indexes = normalize_models(modelos, Server)
    indexes.cada hacer |index|
      si index[:tamaño del cubo] || index['bucketSize']
        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,
      commit_quorum: opciones[:commit_quorum],
      write_concern: escribir_preocupación,
      comment: opciones[:comment],
    }
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      operation_timeouts: 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.

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 (Hash) (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 verdadero, el índice se construirá en segundo plano (solo disponible para versiones del servidor >= 1.3.2 ).

  • :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 (Entero) — default: nil

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

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

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

  • :min (Entero) — default: nil

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

  • partial_filter_expression (Hash)

    Especifique 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” indica que la mayoría de los nodos portadores de datos deben votar

    • "votingMembers" que significa que todos los nodos portadores de datos con derecho a voto 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 crear_uno(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 tiempo máximo_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 (Hash) (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 (Hash) (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:

  • (Error::MultiIndexDrop)

Desde:

  • 2.0.0



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

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:

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

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

  cursor = leer_con_reintento_cursor(sesión, ServerSelector.primario, sí mismo, context: context) hacer |Server|
    enviar_consulta_inicial(Server, sesión, context)
  end
  si ¿block_given?
    cursor.cada hacer |doc|
      rendimiento doc
    end
  else
    cursor.to_enum
  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 mediante 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

#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 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 tiempos de espera de operación(opta = {})
  {}.tocar hacer |Resultado|
    si opta[:timeout_ms] || operation_timeout_ms
      Resultado[:operation_timeout_ms] = opta.borrar(:timeout_ms) || operation_timeout_ms
    else
      Resultado[:tiempo de espera heredado_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