Módulo: Mongo::Collection::View::Readable

Incluido en:
Mongo::Colección::Ver
Definido en:
lib/mongo/colección/vista/readable.rb

Overview

Define el comportamiento relacionado con la lectura para la vista de colección.

Desde:

  • 2.0.0

Colapso del resumen del método de instancia

Detalles del método de instancia

# agregado(tubería, opciones = {}) ⇒ Agregación

Ejecutar una agregación en la vista de colección.

Ejemplos:

Documentos agregados.

view.aggregate([
  { "$group" => { "_id" => "$city", "tpop" => { "$sum" => "$pop" }}}
])

Parámetros:

  • pipeline (Matriz<Hash>)

    La pipeline de agregación.

  • opciones (Hash) (predeterminado: {})

    Las opciones de agregación.

Opciones Hash(opciones):

  • :permitir_uso_de_disco (verdadero,falso)

    Establezca como verdadero si se permite el uso del disco durante la agregación.

  • :tamaño_del_lote (Entero)

    El número de documentos a devolver por agrupar.

  • :omitir validación de documento (verdadero,falso)

    Si omitir o no la validación a nivel de documento.

  • :colación (Hash)

    La intercalación a utilizar.

  • :comment (Objeto)

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

  • :hint (Cadena)

    El índice que se utilizará para la agregación.

  • :dejar (Hash)

    Asignación de variables para usar en la canalización. Consulte la documentación del servidor para obtener más información.

  • :tiempo máximo_ms (Entero)

    El tiempo máximo en milisegundos que permite que se ejecute la agregación. Esta opción está obsoleta; utilice :timeout_ms en su lugar.

  • :sesión (Sesión)

    La sesión a utilizar.

  • :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.

Devuelve:

Desde:

  • 2.0.0



61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Archivo 'lib/mongo/collection/view/readable.rb', línea 61

def Agregar(pipeline, opciones = {})
  opciones = @opciones.unir(opciones) a no ser que Mongo.broken_view_options
  Agregación = Agregación.Nuevo(yo, pipeline, opciones)

  # Debido a que las etapas de canalización $merge y $out escriben documentos en el
  # colección, es necesario borrar el caché cuando se realizan.
  #
  # Opte por borrar todo el caché en lugar de un espacio de nombres porque
  # las etapas $out y $merge no tienen que escribir en el mismo espacio de nombres
  # en el que se realiza la agregación.
  Caché de consultas.borrar Si Agregación.¿escribir?

  Agregación
end

#allow_disk_useVer

Permite que el servidor escriba datos temporales en el disco mientras ejecuta una operación de búsqueda.

Devuelve:

  • (Vista) -

    La nueva vista.

Desde:

  • 2.0.0



80
81
82
# Archivo 'lib/mongo/collection/view/readable.rb', línea 80

def permitir_uso_de_disco
  configurar(:permitir_uso_de_disco, true)
end

#permitir_resultados_parcialesVer

Permite que la consulta obtenga resultados parciales si algunos fragmentos están inactivos.

Ejemplos:

Permitir resultados parciales.

view.allow_partial_results

Devuelve:

  • (Vista) -

    La nueva vista.

Desde:

  • 2.0.0



92
93
94
# Archivo 'lib/mongo/collection/view/readable.rb', línea 92

def allow_partial_results
  configurar(:permitir_resultados_parciales, true)
end

#await_dataVer

Indique al cursor de la consulta que permanezca abierto y espere los datos.

Ejemplos:

Esperar datos en el cursor.

view.await_data

Devuelve:

  • (Vista) -

    La nueva vista.

Desde:

  • 2.0.0



104
105
106
# Archivo 'lib/mongo/collection/view/readable.rb', línea 104

def esperar_datos
  configurar(:espera_datos, true)
end

#tamaño_lote(tamaño_lote = nulo) ⇒ Entero, Vista

Nota:

Especificar 1 o un número negativo es análogo a establecer un límite.

La cantidad de documentos devueltos en cada lote de resultados de MongoDB.

Ejemplos:

Establecer el tamaño del lote.

view.batch_size(5)

Parámetros:

  • tamaño del lote (Entero) (predeterminado: nulo)

    El tamaño de cada lote de resultados.

Devuelve:

  • (Entero,Vista)

    O bien el valor de batch_size o un nuevo View.

Desde:

  • 2.0.0



121
122
123
# Archivo 'lib/mongo/collection/view/readable.rb', línea 121

def tamaño del lote(tamaño del lote = nulo)
  configurar(:tamaño_del_lote, tamaño del lote)
end

#comentario(comentario = nulo) ⇒ Cadena, Vista

Nota:

Establezca profilingLevel en 2 y el comentario se registrará en la colección de perfiles junto con la consulta.

Asociar un comentario a la consulta.

Ejemplos:

Añade un comentario.

view.comment('slow query')

Parámetros:

  • comment (Objeto) (predeterminado: nulo)

    El comentario que se asociará con la consulta.

Devuelve:

  • (Cadena,Vista)

    O el comentario o un nuevo View.

Desde:

  • 2.0.0



139
140
141
# Archivo 'lib/mongo/collection/view/readable.rb', línea 139

def comment(comment = nulo)
  configurar(:comment, comment)
end

#count(opts = {}) ⇒ Entero

Obsoleto.

Utilice #count_documents o #estimated_document_count en su lugar. Sin embargo, tenga en cuenta que deberá sustituir los siguientes operadores al cambiar a #count_documents:

* $where should be replaced with $expr (only works on 3.6+)
* $near should be replaced with $geoWithin with $center
* $nearSphere should be replaced with $geoWithin with $centerSphere

Obtenga un recuento de documentos coincidentes en la colección.

Ejemplos:

Obtenga el número de documentos en la colección.

collection_view.count

Parámetros:

  • opta (Hash) (predeterminado: {})

    Opciones para la operación.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :saltar (Entero)

    El número de documentos a omitir.

  • :hint (Hash)

    Anular la selección de índice predeterminada y obligar a MongoDB a utilizar un índice específico para la consulta.

  • :limit (Entero)

    Número máximo de documentos a contar.

  • :tiempo máximo_ms (Entero)

    La cantidad máxima de tiempo que se puede permitir que el comando se ejecute.

  • :leer (Hash)

    Las opciones de preferencia de lectura.

  • :colación (Hash)

    La intercalación a utilizar.

  • :sesión (Mongo::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:

  • (Entero)

    El recuento de documentos.

Desde:

  • 2.0.0



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
# Archivo 'lib/mongo/collection/view/readable.rb', línea 175

def count(opta = {})
  opta = @opciones.unir(opta) a no ser que Mongo.broken_view_options
  cmd = { :contar => Colección.Nombre, :consulta => filtro }
  cmd[:saltar] = opta[:saltar] Si opta[:saltar]
  cmd[:hint] = opta[:hint] Si opta[:hint]
  cmd[:limit] = opta[:limit] Si opta[:limit]
  Si leer_preocupación
    cmd[:leerPreocupación] = opciones::Mapeador.transform_values_to_strings(
      leer_preocupación)
  end
  cmd[:tiempo máximo MS] = opta[:tiempo máximo_ms] Si opta[:tiempo máximo_ms]
  Mongo::Lint.validar_preferencia_de_lectura_de_subrayado(opta[:leer])
  lectura_pref = opta[:leer] || read_preference
  selector = Selector de servidor.Obtener(lectura_pref || selector de servidor)
  con_sesión(opta) hacer |sesión|
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      tiempos de espera de operación: tiempos de espera de operación(opta)
    )
    lectura_con_reintentar(sesión, selector, context) hacer |Server|
      Operación::Contar.Nuevo(
        selector: cmd,
        nombre_base_datos: database.Nombre,
        opciones: {:limit => -1},
        leer: lectura_pref,
        sesión: sesión,
        # Por alguna razón, la intercalación se aceptó históricamente como una
        # clave de cadena. Tenga en cuenta que este uso no está documentado como válido.
        colación: opta[:colación] || opta['colación '] || intercalación,
        comment: opta[:comment],
      ).ejecutar(
        Server,
        context: context
      )
    end.n.to_i
  end
end

#count_documents(opts = {}) ⇒ Entero

Obtenga un recuento de documentos coincidentes en la colección.

Ejemplos:

Obtenga el número de documentos en la colección.

collection_view.count

Parámetros:

  • opta (Hash) (predeterminado: {})

    Opciones para la operación.

  • ops (Hash)

    un conjunto personalizable de opciones

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :saltar (Entero)

    El número de documentos a omitir.

  • :hint (Hash)

    Anular la selección de índice predeterminada y obligar a MongoDB a usar un índice específico para la consulta. Requiere la versión de servidor 3.6o superior.

  • :limit (Entero)

    Número máximo de documentos a contar.

  • :tiempo máximo_ms (Entero)

    El tiempo máximo que se permite ejecutar el comando. Esta opción está obsoleta; utilice :timeout_ms en su lugar.

  • :leer (Hash)

    Las opciones de preferencia de lectura.

  • :colación (Hash)

    La intercalación a utilizar.

  • :sesión (Mongo::Sesión)

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

Devuelve:

  • (Entero)

    El recuento de documentos.

Desde:

  • 2.6.0



241
242
243
244
245
246
247
248
249
250
251
252
253
254
# Archivo 'lib/mongo/collection/view/readable.rb', línea 241

def contar_documentos(opta = {})
  opta = @opciones.unir(opta) a no ser que Mongo.broken_view_options
  pipeline = [:'$match' => filtro]
  pipeline << { :'$skip' => opta[:saltar] } Si opta[:saltar]
  pipeline << { :'$limit' => opta[:limit] } Si opta[:limit]
  pipeline << { :'$grupo' => { _id: 1, n: { :'$sum' => 1 } } }

  opta = opta.segmento(:hint, :tiempo máximo_ms, :leer, :colación, :sesión, :comment, :tiempo de espera_ms)
  opta[:colación] ||= intercalación

  primera = Agregar(pipeline, opta).primera
  return 0 a no ser que primera
  primera['n'].to_i
end

#cursor_type(type = nil) ⇒ :tailable, ...

El tipo de cursor a utilizar. Puede ser :tailable o :tailable_await.

Ejemplos:

Establecer el tipo de cursor.

view.cursor_type(:tailable)

Parámetros:

  • tipo (:tailable,:tailable_await) (predeterminado: nulo)

    El tipo de cursor.

Devuelve:

  • (:tailable,:tailable_await, Ver)

    O bien la configuración del tipo de cursor o un nuevo View.

Desde:

  • 2.3.0



660
661
662
# Archivo 'lib/mongo/collection/view/readable.rb', línea 660

def tipo_de_cursor(tipo = nulo)
  configurar(:tipo_de_cursor, tipo)
end

#distinct(field_name, opts = {}) ⇒ arreglo<Object>

Obtenga una lista de valores distintos para un campo específico.

Ejemplos:

Obtenga los valores distintos.

collection_view.distinct('name')

Parámetros:

  • nombre_del_campo (Cadena,Símbolo)

    El nombre del campo.

  • opta (Hash) (predeterminado: {})

    Opciones para el comando distinto.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :tiempo máximo_ms (Entero)

    La cantidad máxima de tiempo que se puede permitir que el comando se ejecute.

  • :leer (Hash)

    Las opciones de preferencia de lectura.

  • :colación (Hash)

    La intercalación a utilizar.

Devuelve:

  • (Matriz<Object>)

    La lista de valores distintos.

Desde:

  • 2.0.0



343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
# Archivo 'lib/mongo/collection/view/readable.rb', línea 343

def distinct(nombre_del_campo, opta = {})
  Si nombre_del_campo.nil?
    propagar ArgumentError, 'El nombre del campo para una operación distinta no debe ser nulo'
  end
  opta = @opciones.unir(opta) a no ser que Mongo.broken_view_options
  cmd = { :distinto => Colección.Nombre,
          :llave => nombre_del_campo.a_s,
          :consulta => filtro, }
  cmd[:tiempo máximo MS] = opta[:tiempo máximo_ms] Si opta[:tiempo máximo_ms]
  Si leer_preocupación
    cmd[:leerPreocupación] = opciones::Mapeador.transform_values_to_strings(
      leer_preocupación)
  end
  Mongo::Lint.validar_preferencia_de_lectura_de_subrayado(opta[:leer])
  lectura_pref = opta[:leer] || read_preference
  selector = Selector de servidor.Obtener(lectura_pref || selector de servidor)
  con_sesión(opta) hacer |sesión|
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      tiempos de espera de operación: tiempos de espera de operación(opta)
    )
    lectura_con_reintentar(sesión, selector, context) hacer |Server|
      Operación::Distinto.Nuevo(
        selector: cmd,
        nombre_base_datos: database.Nombre,
        opciones: {:limit => -1},
        leer: lectura_pref,
        sesión: sesión,
        comment: opta[:comment],
        # Por alguna razón, la intercalación se aceptó históricamente como una
        # clave de cadena. Tenga en cuenta que este uso no está documentado como válido.
        colación: opta[:colación] || opta['colación '] || intercalación,
      ).ejecutar(
        Server,
        context: context
      )
    end.primera['values']
  end
end

#recuento_de_documentos_estimado(opciones = {}) ⇒ Entero

Obtiene una estimación del recuento de documentos en una colección utilizando metadatos de la colección.

Ejemplos:

Obtenga el número de documentos en la colección.

collection_view.estimated_document_count

Parámetros:

  • opta (Hash) (predeterminado: {})

    Opciones para la operación.

  • opciones (Hash)

    un conjunto personalizable de opciones

Opciones Hash (opts):

  • :tiempo máximo_ms (Entero)

    La cantidad máxima de tiempo que se puede permitir que el comando se ejecute.

  • :leer (Hash)

    Las opciones de preferencia de lectura.

  • :comment (Objeto)

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

Devuelve:

  • (Entero)

    El recuento de documentos.

Desde:

  • 2.6.0



276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
# Archivo 'lib/mongo/collection/view/readable.rb', línea 276

def recuento estimado de documentos(opta = {})
  a no ser que vista.filtro.¿vacío?
    propagar ArgumentError, "No se puede llamar a estimated_document_count al consultar con un filtro"
  end

  %i[limit Omitir].cada hacer |opt|
    Si opciones.key?(opt) || opta.key?(opt)
      propagar ArgumentError, "Nose puede llamar a estimate_document_count al consultar con #{opt}"
    end
  end

  opta = @opciones.unir(opta) a no ser que Mongo.broken_view_options
  Mongo::Lint.validar_preferencia_de_lectura_de_subrayado(opta[:leer])
  lectura_pref = opta[:leer] || read_preference
  selector = Selector de servidor.Obtener(lectura_pref || selector de servidor)
  con_sesión(opta) hacer |sesión|
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      tiempos de espera de operación: tiempos de espera de operación(opta)
    )
    lectura_con_reintentar(sesión, selector, context) hacer |Server|
      cmd = { contar: Colección.Nombre }
      cmd[:tiempo máximo MS] = opta[:tiempo máximo_ms] Si opta[:tiempo máximo_ms]
      Si leer_preocupación
        cmd[:leerPreocupación] = opciones::Mapeador.transform_values_to_strings(leer_preocupación)
      end
      resultado = Operación::Contar.Nuevo(
        selector: cmd,
        nombre_base_datos: database.Nombre,
        leer: lectura_pref,
        sesión: sesión,
        comment: opta[:comment],
      ).ejecutar(Server, context: context)
      resultado.n.to_i
    end
  end
rescate Error::Operación fallida::Familia => Excª
  Si Excª.Código == 26
    # Espacio de nombres no encontrado
    # Esto solo debería suceder con la ruta de la canalización de agregación
    # (servidor 4.9+). Los servidores anteriores deberían devolver 0 para los inexistentes.
    # colecciones.
    0
  else
    propagar
  end
end

#hint(hint = nil) ⇒ Hash, View

El índice que MongoDB se verá obligado a utilizar para la consulta.

Ejemplos:

Establecer la sugerencia de índice.

view.hint(name: 1)

Parámetros:

  • hint (Hash) (predeterminado: nulo)

    El índice a utilizar para la consulta.

Devuelve:

  • (Hash, Vista)

    Utilice la sugerencia o una nueva View.

Desde:

  • 2.0.0



394
395
396
# Archivo 'lib/mongo/collection/view/readable.rb', línea 394

def hint(hint = nulo)
  configurar(:hint, hint)
end

#limit(limit = nil) ⇒ Integer, View

El número máximo de documentos que se devolverán de la consulta.

Ejemplos:

Establezca el límite.

view.limit(5)

Parámetros:

  • limit (Entero) (predeterminado: nulo)

    El número de documentos a devolver.

Devuelve:

  • (Entero,Vista)

    Puede ser el límite o un nuevo View.

Desde:

  • 2.0.0



408
409
410
# Archivo 'lib/mongo/collection/view/readable.rb', línea 408

def limit(limit = nulo)
  configurar(:limit, limit)
end

#map_reduce(mapa, reducir, opciones = {}) ⇒ MapReduce

Ejecutar una operación de mapa/reducción en la vista de colección.

Ejemplos:

Ejecutar un mapa/reducción.

view.map_reduce(map, reduce)

Parámetros:

  • map (Cadena) -

    La función map js.

  • reducir (Cadena) -

    La función reduce js.

  • opciones (Hash) (predeterminado: {})

    Las opciones de mapa/reducción.

Devuelve:

Desde:

  • 2.0.0



424
425
426
# Archivo 'lib/mongo/collection/view/readable.rb', línea 424

def mapa_reducir(map, reducir, opciones = {})
  MapReduce.Nuevo(yo, map, reducir, @opciones.unir(opciones))
end

#max_await_time_ms(máximo = nulo) ⇒ Entero, Vista

Un límite de tiempo acumulativo en milisegundos para procesar más operaciones en un cursor.

Ejemplos:

Establezca el valor máximo del tiempo de espera en ms.

view.max_await_time_ms(500)

Parámetros:

  • máximo (Entero) (predeterminado: nulo)

    El tiempo máximo en milisegundos.

Devuelve:

  • (Entero,Vista)

    O bien el valor del tiempo máximo de espera en ms o un nuevo View.

Desde:

  • 2.1.0



632
633
634
# Archivo 'lib/mongo/collection/view/readable.rb', línea 632

def tiempo máximo de espera ms(máximo = nulo)
  configurar(:tiempo máximo de espera ms, máximo)
end

#max_scan(valor = nulo) ⇒ Entero, Vista

Obsoleto.

Esta opción está obsoleta a partir de la versión 4.0 del servidor MongoDB.

Establezca el número máximo de documentos a escanear.

Ejemplos:

Establezca el valor máximo de escaneo.

view.max_scan(1000)

Parámetros:

  • valor (Entero) (predeterminado: nulo)

    El número máximo a escanear.

Devuelve:

  • (Entero,Vista)

    El valor de un nuevo View.

Desde:

  • 2.0.0



441
442
443
# Archivo 'lib/mongo/collection/view/readable.rb', línea 441

def escaneo máximo(valor = nulo)
  configurar(:máximo_escaneo, valor)
end

#max_time_ms(máximo = nulo) ⇒ Entero, Vista

Un límite de tiempo acumulativo en milisegundos para procesar operaciones en un cursor.

Ejemplos:

Establece el valor máximo de tiempo en ms.

view.max_time_ms(500)

Parámetros:

  • máximo (Entero) (predeterminado: nulo)

    El tiempo máximo en milisegundos.

Devuelve:

  • (Entero,Vista)

    O bien el valor de tiempo máximo en ms o un nuevo View.

Desde:

  • 2.1.0



646
647
648
# Archivo 'lib/mongo/collection/view/readable.rb', línea 646

def tiempo máximo_ms(máximo = nulo)
  configurar(:tiempo máximo_ms, máximo)
end

#max_value(valor = nulo) ⇒ Hash, Vista

Establezca el valor máximo para buscar.

Ejemplos:

Establece el valor máximo.

view.max_value(_id: 1)

Parámetros:

  • valor (Hash) (predeterminado: nulo)

    El campo y valor máximos.

Devuelve:

  • (Hash, Vista)

    El valor de un nuevo View.

Desde:

  • 2.1.0



455
456
457
# Archivo 'lib/mongo/collection/view/readable.rb', línea 455

def valor máximo(valor = nulo)
  configurar(:valor máximo, valor)
end

#min_value(valor = nulo) ⇒ Hash, Vista

Establezca el valor mínimo para buscar.

Ejemplos:

Establezca el valor mínimo.

view.min_value(_id: 1)

Parámetros:

  • valor (Hash) (predeterminado: nulo)

    El campo y valor mínimo.

Devuelve:

  • (Hash, Vista)

    El valor de un nuevo View.

Desde:

  • 2.1.0



469
470
471
# Archivo 'lib/mongo/collection/view/readable.rb', línea 469

def valor mínimo(valor = nulo)
  configurar(:valor mínimo, valor)
end

#modifiers(doc = nil) ⇒ Hash, View

Si se llama sin argumentos o con un argumento nulo, devuelve los modificadores de servidor heredados (OP_QUERY) para la vista actual. Si se llama con un argumento distinto de nulo, que debe ser un hash o una subclase, fusiona los modificadores proporcionados en la vista actual. Se permiten claves de cadena y de símbolo en el hash de entrada.

Ejemplos:

Set the modifiers document.

view.modifiers(:$orderby => Mongo::Index::ASCENDING)

Parámetros:

  • doc (Hash) (predeterminado: nulo)

    The modifiers document.

Devuelve:

  • (Hash, Vista)

    O bien el documento de modificadores o un nuevo View.

Desde:

  • 2.1.0



613
614
615
616
617
618
619
# Archivo 'lib/mongo/collection/view/readable.rb', línea 613

def modifiers(doc = nulo)
  Si doc.nil?
    Operación::Buscar::Builder::Modifiers.map_server_modifiers(opciones)
  else
    Nuevo(opciones.unir(Operación::Buscar::Builder::Modifiers.opciones del controlador de mapas(BSON::Documento.Nuevo(doc))))
  end
end

#no_cursor_timeoutView

El servidor normalmente desactiva el tiempo de espera de los cursores inactivos tras un período de inactividad (10 minutos) para evitar el uso excesivo de memoria. Configure esta opción para evitarlo.

Ejemplos:

Configura el cursor para que no agote el tiempo de espera.

view.no_cursor_timeout

Devuelve:

  • (Vista) -

    La nueva vista.

Desde:

  • 2.0.0



482
483
484
# Archivo 'lib/mongo/collection/view/readable.rb', línea 482

def no_cursor_timeout
  configurar(:no_cursor_timeout, true)
end

#parallel_scan(cursor_count, opciones = {}) ⇒ Objeto

Desde:

  • 2.0.0



702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
# Archivo 'lib/mongo/collection/view/readable.rb', línea 702

def escaneo paralelo(recuento de cursores, opciones = {})
  Si opciones[:sesión]
    # La sesión será sobrescrita por la que aparece en +opciones+ más adelante.
    sesión = Cliente.obtener_sesión(@opciones)
  else
    sesión = nulo
  end
  Server = selector de servidor.seleccionar_servidor(clúster, nulo, sesión)
  especulación = {
    nombre_coll: Colección.Nombre,
    nombre_base_datos: database.Nombre,
    recuento de cursores: recuento de cursores,
    preocupación de lectura: leer_preocupación,
    sesión: sesión,
  }.update(opciones)
  sesión = especulación[:sesión]
  op = Operación::ParallelScan.Nuevo(especulación)
  # Tenga en cuenta que el objeto de contexto no debe reutilizarse para usos posteriores.
  #Obtener más operaciones.
  context = Operación::Context.Nuevo(cliente: Cliente, sesión: sesión)
  resultado = op.ejecutar(Server, context: context)
  resultado.cursor_ids.map hacer |cursor_id|
    especulación = {
      cursor_id: cursor_id,
      nombre_coll: Colección.Nombre,
      nombre_base_datos: database.Nombre,
      sesión: sesión,
      tamaño del lote: tamaño del lote,
      to_return: 0,
      # max_time_ms no se pasa aquí, supongo que intencionalmente, ¿no?
    }
    op = Operación::Obtener más.Nuevo(especulación)
    context = Operación::Context.Nuevo(
      cliente: Cliente,
      sesión: sesión,
      id_global_de_conexión: resultado.id_global_de_conexión,
    )
    resultado = Si Server.¿equilibrador de carga?
               # La conexión se verificará cuando se agote el cursor.
               conexión = Server.Piscina.verificar(context: context)
               op.ejecutar_con_conexión(conexión, context: context)
             else
               op.ejecutar(Server, context: context)
             end
    Cursor.Nuevo(yo, resultado, Server, sesión: sesión)
  end
end

#proyección(documento = nulo) ⇒ Hash, Vista

Nota:

Un valor de 0 excluye un campo del documento. Un valor de 1 lo incluye. Todos los valores deben ser 0 o 1, excepto el valor _id. El campo _id se incluye por defecto. Debe excluirse explícitamente.

Los campos que se incluirán o excluirán de cada documento en el conjunto de resultados.

Ejemplos:

Establezca los campos que desea incluir o excluir.

view.projection(name: 1)

Parámetros:

  • Documento (Hash) (predeterminado: nulo)

    El campo y 1 o 0, para incluirlo o excluirlo.

Devuelve:

  • (Hash, Vista)

    O bien los campos o un nuevo View.

Desde:

  • 2.0.0



500
501
502
503
# Archivo 'lib/mongo/collection/view/readable.rb', línea 500

def proyección(Documento = nulo)
  validate_doc!(Documento) Si Documento
  configurar(:proyección, Documento)
end

#leer(valor = nulo) ⇒ Símbolo, Vista

Nota:

Si no se especifica ninguno para la query, se utilizará la preferencia de lectura de la colección.

La preferencia de lectura que se utilizará para la consulta.

Parámetros:

  • valor (Hash) (predeterminado: nulo)

    El modo de preferencia de lectura que se utilizará para la consulta.

Devuelve:

  • (Símbolo, Vista)

    O bien la preferencia de lectura o un nuevo View.

Desde:

  • 2.0.0



516
517
518
519
# Archivo 'lib/mongo/collection/view/readable.rb', línea 516

def Lea(valor = nulo)
  return read_preference Si valor.nil?
  configurar(:leer, valor)
end

#read_concernObjeto

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

Desde:

  • 2.0.0



674
675
676
677
678
679
680
# Archivo 'lib/mongo/collection/view/readable.rb', línea 674

def leer_preocupación
  Si opciones[:sesión] && opciones[:sesión].¿en_transacción?
    opciones[:sesión].Enviar(:txn_leer_preocupación) || Colección.Cliente.leer_preocupación
  else
    Colección.leer_preocupación
  end
end

#read_preferenceObjeto

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

Desde:

  • 2.0.0



683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
# Archivo 'lib/mongo/collection/view/readable.rb', línea 683

def read_preference
  @read_preference ||= begin
    # La preferencia de lectura de la operación siempre se respeta y tiene la
    # Máxima prioridad. Si estamos en una transacción, miramos
    # preferencia de lectura de transacción y predeterminada al cliente, ignorando
    # preferencia de lectura de colección. Si no estamos en transacción,
    # mira la preferencia de lectura de la colección que, por defecto, es el cliente.
    rp = Si opciones[:leer]
      opciones[:leer]
    elsif opciones[:sesión] && opciones[:sesión].¿en_transacción?
      opciones[:sesión].preferencia de lectura de txn || Colección.Cliente.read_preference
    else
      Colección.read_preference
    end
    Lint.validar_preferencia_de_lectura_de_subrayado(rp)
    rp
  end
end

#return_key(valor = nulo) ⇒ verdadero,...

Establezca si desea devolver solo el campo o los campos indexados.

Ejemplos:

Establecer el valor clave de retorno.

view.return_key(true)

Parámetros:

  • valor (verdadero,falso) (predeterminado: nulo)

    El valor de la clave de retorno.

Devuelve:

  • (verdadero,falso, Ver)

    El valor de un nuevo View.

Desde:

  • 2.1.0



531
532
533
# Archivo 'lib/mongo/collection/view/readable.rb', línea 531

def tecla de retorno(valor = nulo)
  configurar(:return_key, valor)
end

#show_disk_loc(valor = nulo) ⇒ verdadero,... También conocido como: show_record_id

Establezca si se debe mostrar la ubicación del disco para cada documento.

Ejemplos:

Establecer la opción para mostrar la ubicación del disco.

view.show_disk_loc(true)

Parámetros:

  • valor (verdadero,falso) (predeterminado: nulo)

    El valor del campo.

Devuelve:

  • (verdadero,falso, Ver)

    O bien el valor o un nuevo View.

Desde:

  • 2.0.0



546
547
548
# Archivo 'lib/mongo/collection/view/readable.rb', línea 546

def show_disk_loc(valor = nulo)
  configurar(:show_disk_loc, valor)
end

#saltar(número = nulo) ⇒ Entero, Ver

La cantidad de documentos que se deben omitir antes de devolver resultados.

Ejemplos:

Establezca el número que desea omitir.

view.skip(10)

Parámetros:

  • Número (Entero) (predeterminado: nulo)

    Número de documentos a omitir.

Devuelve:

  • (Entero,Vista)

    O bien el valor de omisión o un nuevo View.

Desde:

  • 2.0.0



562
563
564
# Archivo 'lib/mongo/collection/view/readable.rb', línea 562

def Omitir(Número = nulo)
  configurar(:saltar, Número)
end

# instantánea(valor = nulo) ⇒ Objeto

Obsoleto.

Esta opción está obsoleta a partir de la versión 4.0 del servidor MongoDB.

Nota:

Cuando se establece como verdadero, evita que los documentos se devuelvan más de una vez.

Establezca el valor de la instantánea para la vista.

Ejemplos:

Establezca el valor de la instantánea.

view.snapshot(true)

Parámetros:

  • valor (verdadero,falso) (predeterminado: nulo)

    El valor de la instantánea.

Desde:

  • 2.0.0



580
581
582
# Archivo 'lib/mongo/collection/view/readable.rb', línea 580

def snapshot(valor = nulo)
  configurar(:instantánea, valor)
end

#sort(spec = nulo) ⇒ Hash, Vista

Los pares de clave y dirección mediante los cuales se ordenará el conjunto de resultados.

Ejemplos:

Establecer los criterios de clasificación

view.sort(name: -1)

Parámetros:

  • especulación (Hash) (predeterminado: nulo)

    Los atributos y direcciones para ordenar.

Devuelve:

  • (Hash, Vista)

    O bien la configuración de clasificación o un nuevo View.

Desde:

  • 2.0.0



595
596
597
# Archivo 'lib/mongo/collection/view/readable.rb', línea 595

def sort(especulación = nulo)
  configurar(:sort, especulación)
end

#timeout_ms(timeout_ms = nil) ⇒ Integer, View

Tiempo de espera por operación en milisegundos. Debe ser un entero positivo.

Parámetros:

  • tiempo de espera_ms (Entero) (predeterminado: nulo)

    Valor de tiempo de espera.

Devuelve:

  • (Entero,Vista)

    O el valor timeout_ms o un nuevo View.

Desde:

  • 2.0.0



669
670
671
# Archivo 'lib/mongo/collection/view/readable.rb', línea 669

def tiempo de espera_ms(tiempo de espera_ms = nulo)
  configurar(:tiempo de espera_ms, tiempo de espera_ms)
end