Módulo: Mongo::Collection::View::Readable
- Incluido en:
- Mongo::Colección::Ver
- Definido en:
- lib/mongo/collection/view/readable.rb
Overview
Define el comportamiento relacionado con la lectura para la vista de colección.
Resumen del método de instancia colapsar
-
#agregar(pipeline, 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 query que permanezca abierto y espere datos.
-
#tamaño_lote(tamaño_lote = nulo) ⇒ Entero, Vista
La cantidad de documentos devueltos en cada lote de resultados de MongoDB.
-
#comment(comment = nil) ⇒ String, View
Relaciona un comentario con la query.
-
#count(opts = {}) ⇒ Integer
Obsoleto
Obsoleto.
Utiliza #count_documents o #estimated_document_count en su lugar. Sin embargo, tenga en cuenta que los siguientes operadores deberán ser sustituidos 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 = {}) ⇒ Integer
Obtenga un recuento de documentos coincidentes en la colección.
-
#cursor_type(tipo = nil) ⇒:tailable,...
El tipo de cursor a utilizar.
-
#distinct(field_name, opts = {}) ⇒ arreglo<Object>
Obtén una lista de valores distintos para un campo específico.
-
#estimated_document_count(opts = {}) ⇒ Número entero
Se obtiene una estimación de la cantidad de documentos en una colección utilizando los 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 Docs que se devolverán de la consulta.
-
#map_reduce(map, reduce, options = {}) ⇒ MapReduce
Ejecutar una operación de map/reduce en la vista de la colección.
-
#max_await_time_ms(max = nil) ⇒ Integer, View
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 se encuentra obsoleta a partir de la versión del servidor MongoDB 4.0.
-
#max_time_ms(max = nil) ⇒ Entero, Vista
Un límite de tiempo acumulativo en milisegundos para procesar operaciones en un cursor.
-
#max_value(valor = nil) ⇒ Hash, View
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 antiguos (OP_QUERY) del servidor para la vista actual.
-
#no_cursor_timeout ⇒ View
El servidor normalmente agota los cursores inactivos después de un período de inactividad (10 minutos) para evitar el uso excesivo de memoria.
- #parallel_scan(cursor_count, options = {}) ⇒ Object
-
#proyección(documento = nulo) ⇒ Hash, Vista
Los campos que se deben incluir o excluir de cada documento en el conjunto de resultados.
-
#read(value = nil) ⇒ Símbolo, Vista
La preferencia de lectura que se utilizará para la query.
- #read_concern ⇒ Objeto privado
- #read_preference ⇒ Objeto privado
-
#return_key(valor = nil) ⇒ true, ...
Establezca si desea devolver solo el campo o los campos indexados.
-
#show_disk_loc(valor = nil) ⇒ true, ... (también: #show_record_id)
Establece si se debe mostrar la ubicación del disco para cada documento.
-
#saltar(número = nulo) ⇒ Entero, Ver
El número de docs que se deben omitir antes de mostrar resultados.
-
#snapshot(valor = nil) ⇒ Objeto
Obsoleto
Obsoleto.
Esta opción se encuentra obsoleta a partir de la versión del servidor MongoDB 4.0.
-
#sort(spec = nil) ⇒ Hash, Vista
Los pares de clave y dirección por los que 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
#aggregate(pipeline, options = {}) ⇒ 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, = {}) = @options.fusionar() a menos que Mongo. Agregación = Agregación.Nuevo(sí mismo, pipeline, ) # Porque las etapas de la pipeline $merge y $out escriben documentos en # colección, es necesario borrar la caché cuando se realizan. # # Elige limpiar toda la caché en lugar de solo un espacio de nombres porque # las etapas $out y $merge no tienen que escribirse en el mismo namespace # en la que se realiza la agregación. Caché de consultas.borrar si Agregación.guardar? 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(permite_uso_de_disco, true) end |
#allow_partial_results ⇒ 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 query que permanezca abierto y espere datos.
104 105 106 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 104 def await_data 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(:batch_size, tamaño del lote) end |
#comentario(comentario = nulo) ⇒ Cadena, Vista
Configure el nivel de perfilado en 2 y el comentario se registrará en la colección de perfiles junto con la query.
Relaciona un comentario con la query.
139 140 141 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 139 def comment(comment = nulo) configurar(:comment, comment) end |
#count(opts = {}) ⇒ Entero
Utiliza #count_documents o #estimated_document_count en su lugar. Sin embargo, tenga en cuenta que los siguientes operadores deberán ser sustituidos 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 = @options.fusionar(opta) a menos que Mongo. cmd = { \:count => Colección.Nombre, :consulta => filtro } cmd[Omitir] = opta[Omitir] si opta[Omitir] 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 en milisegundos (:maxTimeMS)] = opta[max_time_ms] si opta[max_time_ms] Mongo::Lint.validar_preferencia_de_lectura_de_subrayado(opta[:leer]) lectura_pref = opta[:leer] || read_preference selector = ServerSelector.Obtener(lectura_pref || selector_de_servidor) con_sesión(opta) hacer |sesión| context = Operación::Context.Nuevo( cliente: Cliente, sesión: sesión, operation_timeouts: tiempos de espera de operación(opta) ) read_with_retry(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 fue históricamente aceptada como una # clave de cadena. Tenga en cuenta que este uso no está documentado como válido. intercalación: opta[:colación] || opta['intercalación'] || intercalación, comment: opta[:comment], ).ejecutar( Server, context: context ) end.n.to_i end end |
#count_documents(opts = {}) ⇒ Integer
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 = @options.fusionar(opta) a menos que Mongo. pipeline = [:'$match' => filtro] pipeline << { :'$skip' => opta[Omitir] } si opta[Omitir] pipeline << { :'$limit' => opta[:limit] } si opta[:limit] pipeline << { :'$grupo' => { _id: 1, n: { :'$sum' => 1 } } } opta = opta.rebanada(:hint, max_time_ms, :leer, :colación, :: sesión, :comment, :timeout_ms) opta[:colación] ||= intercalación primero = Agregar(pipeline, opta).primero return 0 a menos que primero primero['n'].to_i end |
#cursor_type(type = nil) ⇒ :tailable, ...
El tipo de cursor que se debe usar. Puede ser :tailable o :tailable_await.
660 661 662 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 660 def cursor_type(tipo = nulo) configurar(tipo_de_cursor, tipo) end |
#distinct(field_name, opts = {}) ⇒ arreglo<Object>
Obtén 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(field_name, opta = {}) si field_name.nil? propagar ArgumentError, 'El nombre del campo para una operación distinta no debe ser nulo' end opta = @options.fusionar(opta) a menos que Mongo. cmd = { :distinto => Colección.Nombre, :clave => field_name.to_s, :consulta => filtro, } cmd[Tiempo máximo en milisegundos (:maxTimeMS)] = opta[max_time_ms] si opta[max_time_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 = ServerSelector.Obtener(lectura_pref || selector_de_servidor) con_sesión(opta) hacer |sesión| context = Operación::Context.Nuevo( cliente: Cliente, sesión: sesión, operation_timeouts: tiempos de espera de operación(opta) ) read_with_retry(sesión, selector, context) hacer |Server| Operación::distinct.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 fue históricamente aceptada como una # clave de cadena. Tenga en cuenta que este uso no está documentado como válido. intercalación: opta[:colación] || opta['intercalación'] || intercalación, ).ejecutar( Server, context: context ) end.primero['values'] end end |
#estimated_document_count(opts = {}) ⇒ Integer
Se obtiene una estimación de la cantidad de documentos en una colección utilizando los 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 estimated_document_count(opta = {}) a menos 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 = @options.fusionar(opta) a menos que Mongo. Mongo::Lint.validar_preferencia_de_lectura_de_subrayado(opta[:leer]) lectura_pref = opta[:leer] || read_preference selector = ServerSelector.Obtener(lectura_pref || selector_de_servidor) con_sesión(opta) hacer |sesión| context = Operación::Context.Nuevo( cliente: Cliente, sesión: sesión, operation_timeouts: tiempos de espera de operación(opta) ) read_with_retry(sesión, selector, context) hacer |Server| cmd = { conteo: Colección.Nombre } cmd[Tiempo máximo en milisegundos (:maxTimeMS)] = opta[max_time_ms] si opta[max_time_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::OperationFailure::Familia => Excª si Excª.Código == 26 # NamespaceNotFound # 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 inexistente # 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 Docs 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 map/reduce en la vista de la colección.
424 425 426 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 424 def mapa_reducir(map, disminuir, = {}) mapReduce.Nuevo(sí mismo, map, disminuir, @options.fusionar()) end |
#max_await_time_ms(máx. = nil) ⇒ Integer, Ver
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 max_await_time_ms(máximo = nulo) configurar(; tiempo_máximo_espera_ms, máximo) end |
#max_scan(value = nil) ⇒ Entero, Ver
Esta opción se encuentra obsoleta a partir de la versión del servidor MongoDB 4.0.
Establece el número máximo de documentos para escanear.
441 442 443 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 441 def max_scan(Valor = nulo) configurar(:máximo_escaneo, Valor) end |
#max_time_ms(max = nil) ⇒ Integer, Ver
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(max_time_ms, máximo) end |
#max_value(valor = nil) ⇒ Hash, Ver
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 min_value(Valor = nulo) configurar(:min_value, Valor) end |
#modifiers(doc = nil) ⇒ Hash, View
Si se llama sin argumentos o con un argumento nulo, devuelve los modificadores del servidor heredados (OP_QUERY) para la vista actual. Si se llama con un argumento que no sea nulo, y que debe ser un Hash o una subclase, fusiona los modificadores proporcionados en la vista actual. Tanto las claves de tipo string como de tipo símbolo se permiten 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::desarrolladores::Modifiers.map_server_modifiers() else Nuevo(.fusionar(Operación::buscar::desarrolladores::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, options = {}) ⇒ 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(cursor_count, = {}) si [:: sesión] # La sesión sería sobrescrita por la presente en +opciones+ más adelante. sesión = Cliente.get_session(@options) 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_cursor: cursor_count, read_concern: 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 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, batch_size: tamaño del lote, to_return: 0, # No se está pasando max_time_ms aquí, ¿asumo que intencionalmente? } 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.connection_global_id, ) Resultado = si Server.load_balancer? # La conexión se verificará cuando se termine con el cursor. Conexión = Server.group.check_out(context: context) op.ejecutar_con_conexión(Conexión, context: context) else op.ejecutar(Server, context: context) end Cursor.Nuevo(sí mismo, Resultado, Server, sesión: sesión) end end |
#proyección(documento = nil) ⇒ Hash, Ver
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 deben incluir o excluir 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 query.
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 por defecto al cliente, omitiendo # preferencia de lectura de la colección. Si no estamos en transacción # observa 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_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(value = nil) ⇒ true, ... También conocido como: show_record_id
Establece 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 |
#skip(número = nil) ⇒ Integer, View
El número de docs que se deben omitir antes de mostrar resultados.
562 563 564 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 562 def Omitir(Número = nulo) configurar(Omitir, Número) end |
#snapshot(value = nil) ⇒ objeto
Esta opción se encuentra obsoleta a partir de la versión del servidor MongoDB 4.0.
Cuando se establece como verdadero, evita que los documentos se devuelvan más de una vez.
Establece el valor de snapshot para la vista.
580 581 582 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 580 def snapshot(Valor = nulo) configurar(snapshot, Valor) end |
#sort(spec = nulo) ⇒ Hash, Vista
Los pares de clave y dirección por los que 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
El tiempo de espera por operación en milisegundos. Debe ser un número entero positivo.
669 670 671 |
# Archivo 'lib/mongo/collection/view/readable.rb', línea 669 def timeout_ms(timeout_ms = nulo) configurar(:timeout_ms, timeout_ms) end |