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.
Colapso del resumen del método de instancia
-
# agregado (tubería, opciones = {}) ⇒Agregación
Ejecutar una agregación en la vista de colección.
-
#allow_disk_use ⇒ Ver
Permite que el servidor escriba datos temporales en el disco mientras ejecuta una operación de búsqueda.
-
#permitir_resultados_parciales ⇒ Ver
Permite que la consulta obtenga resultados parciales si algunos fragmentos están inactivos.
-
#await_data ⇒ Ver
Indique al cursor de la consulta que permanezca abierto y espere los datos.
-
#tamaño_lote(tamaño_lote = nulo) ⇒ Entero, Vista
La cantidad de documentos devueltos en cada lote de resultados de MongoDB.
-
#comentario(comentario = nulo) ⇒ Cadena, Vista
Asociar un comentario a la consulta.
-
#count(opts = {}) ⇒ Entero
Obsoleto
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 -
#count_documents(opts = {}) ⇒ Entero
Obtenga un recuento de documentos coincidentes en la colección.
-
#cursor_type(tipo = nil) ⇒:tailable,...
El tipo de cursor a utilizar.
-
#distinto(nombre_del_campo, opciones = {}) ⇒ Matriz<Object>
Obtenga una lista de valores distintos para un campo específico.
-
#recuento_de_documentos_estimado(opciones = {}) ⇒ Entero
Obtiene una estimación del recuento de documentos en una colección utilizando metadatos de la colección.
-
#hint(hint = nil) ⇒ Hash, View
El índice que MongoDB se verá obligado a utilizar para la consulta.
-
#limit(limit = nil) ⇒ Integer, View
El número máximo de documentos que se devolverán de la consulta.
-
#map_reduce(mapa, reducir, opciones = {}) ⇒ MapReduce
Ejecutar una operación de mapa/reducción en la vista de colección.
-
#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.
-
#max_scan(valor = nulo) ⇒ Entero, Vista
Obsoleto
Obsoleto.
Esta opción está obsoleta a partir de la versión 4.0 del servidor MongoDB.
-
#max_time_ms(máximo = nulo) ⇒ Entero, Vista
Un límite de tiempo acumulativo en milisegundos para procesar operaciones en un cursor.
-
#max_value(valor = nulo) ⇒ Hash, Vista
Establezca el valor máximo para buscar.
-
#min_value(valor = nulo) ⇒ Hash, Vista
Establezca el valor mínimo para buscar.
-
#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.
-
#no_cursor_timeout ⇒ View
El servidor normalmente agota el tiempo de los cursores inactivos después de un período de inactividad (10 minutos) para evitar el uso excesivo de memoria.
- #parallel_scan(cursor_count, opciones = {}) ⇒ Objeto
-
#proyección(documento = nulo) ⇒ Hash, Vista
Los campos que se incluirán o excluirán de cada documento en el conjunto de resultados.
-
#leer(valor = nulo) ⇒ Símbolo, Vista
La preferencia de lectura que se utilizará para la consulta.
- #read_concern ⇒ Objeto privada
- #read_preference ⇒ Objeto privada
-
#return_key(valor = nulo) ⇒ verdadero,...
Establezca si desea devolver solo el campo o los campos indexados.
-
#show_disk_loc(valor = nulo) ⇒ verdadero,... (también: #show_record_id)
Establezca si se debe mostrar la ubicación del disco para cada documento.
-
#saltar(número = nulo) ⇒ Entero, Ver
La cantidad de documentos que se deben omitir antes de devolver resultados.
-
# instantánea (valor = nulo) ⇒Objeto
Obsoleto
Obsoleto.
Esta opción está obsoleta a partir de la versión 4.0 del servidor MongoDB.
-
#sort(spec = nulo) ⇒ Hash, Vista
Los pares de clave y dirección mediante los cuales se ordenará el conjunto de resultados.
-
#timeout_ms(timeout_ms = nil) ⇒ Integer, View
El tiempo de espera por operación en milisegundos.
Detalles del método de instancia
# agregado(tubería, opciones = {}) ⇒ Agregación
Ejecutar una agregación en la vista de colección.
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.unir() a no ser que Mongo. Agregación = Agregación.Nuevo(yo, pipeline, ) # 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_use ⇒ Ver
Permite que el servidor escriba datos temporales en el disco mientras ejecuta una operación de búsqueda.
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_parciales ⇒ Ver
Permite que la consulta obtenga resultados parciales si algunos fragmentos están inactivos.
92 93 94 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 92 def allow_partial_results configurar(:permitir_resultados_parciales, true) end |
#await_data ⇒ Ver
Indique al cursor de la consulta que permanezca abierto y espere los datos.
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
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.
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
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.
139 140 141 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 139 def comment(comment = nulo) configurar(:comment, comment) end |
#count(opts = {}) ⇒ Entero
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.
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. 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.
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. 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.
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.
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. 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.
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 .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. 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.
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.
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.
424 425 426 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 424 def mapa_reducir(map, reducir, = {}) MapReduce.Nuevo(yo, map, reducir, @opciones.unir()) 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.
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
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.
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.
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.
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.
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.
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() else Nuevo(.unir(Operación::Buscar::Builder::Modifiers.(BSON::Documento.Nuevo(doc)))) end end |
#no_cursor_timeout ⇒ View
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.
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
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, = {}) Si [: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() 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
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.
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
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.
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_concern ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
674 675 676 677 678 679 680 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 674 def leer_preocupación Si [:sesión] && [:sesión].¿en_transacción? [:sesión].Enviar(:txn_leer_preocupación) || Colección.Cliente.leer_preocupación else Colección.leer_preocupación end end |
#read_preference ⇒ Objeto
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
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 [:leer] [:leer] elsif [:sesión] && [:sesión].¿en_transacción? [: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.
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.
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.
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
Esta opción está obsoleta a partir de la versión 4.0 del servidor MongoDB.
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.
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.
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.
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 |