Clase: Mongoid::Contextual::Mongo
- Hereda:
-
Objeto
- Objeto
- Mongoid::Contextual::Mongo
- Ampliado por:
- Reenviable
- Incluye:
- Enumerable, Association::EagerLoadable, Atomic, Aggregable::Mongo, Queryable
- Definido en:
- lib/mongoid/contextual/mongo.rb,
lib/mongoid/contextual/mongo/documents_loader.rb
Overview
Objeto de contexto utilizado para realizar consultas masivas y operaciones de persistencia en documentos que persisten en la base de datos y no se han cargado en la memoria de la aplicación.
Definido bajo Namespace
Clases: DocumentsLoader
Colapso delresumen constante
- OPCIONES =
Constante opciones.
[ :hint, :limit, Omitir, :sort, :batch_size, :máximo_escaneo, max_time_ms, snapshot, :comment, :leer, tipo_de_cursor, :colación ].freeze
Constantes incluidas de Atomic
Resumen de atributos de la instancia colapsar
-
#documentos_loader ⇒ Objeto
Solo lectura
Devuelve el valor del atributo documents_loader.
-
#view ⇒ Hash
Solo lectura
Ejecuta una explicación sobre los criterios.
- #view La vista de colección de Mongo.(TheMongocollectionview.) ⇒ Objeto Solo lectura
Atributos incluidos de Queryable
#colección, #colección La colección sobre la cual realizar la consulta., #criterios, #criterios Loscriterios para el contexto., #clase, #clase La clase para los criterios.
Resumen del método de instancia colapsar
-
#count(options = {}, &block) ⇒ Integer
Obtén la cantidad de documentos que coinciden con la query.
-
#eliminar ⇒ nulo (también: #eliminar_todos)
Eliminar todos los documentos de la base de datos que coincidan con el selector.
-
#destruir ⇒nulo (también: #destroy_all)
Destruye todos los documentos en la base de datos que coincidan con el selector.
-
#distinct(campo) ⇒ arreglo<Object>
Obtenga los valores distintos en la base de datos para el campo proporcionado.
-
#each(&block) ⇒ Enumerator
Iterar sobre el contexto.
-
#estimated_count(opciones = {}) ⇒ Integer
Obtén el número estimado de documentos que coinciden con la query.
-
#¿exists?(id_or_conditions = :none) ⇒ true | false
¿Existe algún documento para el contexto?
-
#quinto ⇒ Documento | nil
Obtén el quinto documento en la base de datos para el selector de los criterios.
-
#¡quinto! ⇒ Documento
Obten el quinto documento en la base de datos para el selector de criterios o genera un error si no se encuentra ninguno.
-
#find_first ⇒ Objeto
privado
Devuelve el primer resultado sin aplicar ordenación.
-
#find_one_and_delete ⇒ Documento
Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.
-
#find_one_and_replace(reemplazo, opciones = {}) ⇒ documento
Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.
-
#find_one_and_update(update, options = {}) ⇒ Document
Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.
-
#primero(límite = nulo) ⇒ Documento | nulo (también: #uno)
Obtén el primer documento en la base de datos para el selector de criterios.
-
#first! ⇒ Document
Obtener el primer documento en la base de datos para el selector de los criterios o generar un error si no se encuentra ninguno.
-
#cuarta ⇒ Documento | nil
Obtén el cuarto documento en la base de datos para el selector de los criterios.
-
#¡cuarto! ⇒ Documento
Obtenga el cuarto documento en la base de datos para el selector de los criterios o genere un error si no se encuentra ninguno.
-
#inicializar(criterios) ⇒ Mongo
constructor
Crea el nuevo contexto de Mongo.
-
#last(limit = nil) ⇒ Document | nil
Obtén el último documento en la base de datos según el selector de los criterios.
-
#last! ⇒ Document
Obtener el último documento en la base de datos para el selector de criterios o generar un error si no se encuentra ninguno.
-
#longitud ⇒ Entero (también: #tamaño)
Devuelve el número de documentos en la base de datos que coinciden con el selector de la query.
-
#limit(valor) ⇒ Mongo
Limita la cantidad de documentos que se devuelven en la base de datos.
-
#load_async ⇒ Objeto
privado
Programa un cronograma para cargar documentos para el contexto.
-
#map_reduce(map, reduce) ⇒ MapReduce
Inicia una operación de map/reduce desde el contexto.
-
# pick(*fields) ⇒ objeto |arreglo<Object>
Elije los valores de un solo campo de la base de datos.
-
# pluck(*fields) ⇒arreglo<Object> | arreglo<arreglo<Object>>
Extrae el/los valor(es) del campo desde la base de datos.
-
#segundo ⇒ Documento | nil
Obtenga el segundo documento en la base de datos para el selector de criterios.
-
#segundo! ⇒ Documento
Obtén el segundo documento en la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
-
#penúltima ⇒ Documento | nulo
Obtenga el penúltimo documento en la base de datos para el selector de criterios.
-
#¡penúltimo! ⇒ Documento
Obtenga el segundo último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#saltar(valor) ⇒ Mongo
Omite el número de documentos proporcionado.
-
#sort(values = nil, &block) ⇒ Mongo
Ordena los documentos según la especificación proporcionada.
-
#take(limit = nil) ⇒ Document | Array<Document>
Tome el número de documentos dado de la base de datos.
-
#take! ⇒ Document
Tome un documento de la base de datos y genere un error si no hay ninguno.
-
#tally(field) ⇒ Hash
Obtenga un hash de recuentos para los valores de un solo campo.
-
#tercero ⇒ Documento | nulo
Obtenga el tercer documento en la base de datos para el selector de criterios.
-
#tercero! ⇒ Documento
Obtén el tercer documento de la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
-
#antepenúltimo ⇒ Documento | nulo
Obtén el tercer documento antes del último en la base de datos para el selector de los criterios.
-
#¡tercero_al_último! ⇒ Documento
Obtén el tercer documento desde el final en la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
-
#update(attributes = nil, opts = {}) ⇒ nil | false
Actualiza el primer documento coincidente de forma atómica.
-
#update_all(attributes = nil, opts = {}) ⇒ nil | false
Actualiza todos los documentos coincidentes de manera atómica.
Métodos incluidos de Queryable
Métodos incluidos desde Association::EagerLoadable
#carga_ansiosa, #cargable_ansiosa?, #precarga
Métodos incluidos de Atomic
#add_atomic_pull, #add_atomic_unset, #atomic_array_add_to_sets, #atomic_array_pulls, #atomic_array_pushes, #atomic_attribute_name, #atomic_delete_modifier, #atomic_insert_modifier, #atomic_path, #atomic_paths, #atomic_position, #atomic_pulls, #atomic_pushes, #atomic_sets, #atomic_unsets, #atomic_updates, #delayed_atomic_pulls, #delayed_atomic_sets, #delayed_atomic_unsets, #flag_as_destroyed, #flagged_destroys, #process_flagged_destroys
Métodos incluidos de Aggregable::Mongo
#agregados, #promedio, #máx, #mín, #suma
Detalles del constructor
#intaializar(criterios) ⇒ Mongo
Crea el nuevo contexto de Mongo. Esto delega las operaciones al controlador subyacente.
270 271 272 273 274 275 276 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 270 def inicializar(criterios) @criteria, @klass = criterios, criterios.klass @colección = @klass.Colección criterios.enviar(:merge_type_selection) @view = Colección.buscar(criterios.selector, sesión: _sesión) end |
Detalles de los atributos de instancia
#documents_loader ⇒ Object (solo lectura)
Devuelve el valor del atributo documents_loader.
54 55 56 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 54 def documents_loader @documentos_loader end |
#vista ⇒ Hash (solo lectura)
Ejecuta una explicación sobre los criterios.
42 43 44 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 42 def vista @view end |
#ver La vista de la colección Mongo.(Lavista de lacolecciónMongo.) ⇒ Objeto (solo lectura)
42 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 42 attr_reader vista |
Detalles del método de instancia
#count(options = {}, &block) ⇒ Integer
Obtén la cantidad de documentos que coinciden con la query.
73 74 75 76 77 78 79 80 81 82 83 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 73 def count( = {}, Ybloque) return super(Ybloque) si ¿block_given? si valid_for_count_documents? vista.contar_documentos() else # TODO: Remueve esto cuando quitemos la API for_js obsoleta. # https://jira.mongodb.org/browse/MONGOID-5681 vista.count() end end |
#borrar ⇒ nulo También conocido como: delete_all
Eliminar todos los documentos de la base de datos que coincidan con el selector.
114 115 116 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 114 def borrar vista.borrar_varios.deleted_count end |
#destruir ⇒ nil También conocido como: destroy_all
Destruye todos los documentos en la base de datos que coincidan con el selector.
125 126 127 128 129 130 131 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 125 def destruir cada.inyectar(0) hacer |count, doc| doc.destruir count += 1 si acknowledged_write? count end end |
# distinto(campo)⇒ arreglo<Object>
Obtenga los valores distintos en la base de datos para el campo proporcionado.
142 143 144 145 146 147 148 149 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 142 def distinct(Campo) Nombre = klass.cleanse_localized_field_names(Campo) vista.distinct(Nombre).map hacer |Valor| es_traducción = "#{nombre}_traducciones" == Campo.to_s desmongoizar_recursivo(Nombre, Valor, es_traducción) end end |
#cada(&bloque) ⇒ Enumerador
Iterar sobre el contexto. Si se proporciona un bloque, cede a un documento Mongoid por cada uno; de lo contrario, retorna un enum.
160 161 162 163 164 165 166 167 168 169 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 160 def cada(Ybloque) si ¿block_given? documentos_para_iteración.cada hacer |doc| yield_document(doc, Ybloque) end sí mismo else to_enum end end |
#estimated_count(options = {}) ⇒ Integer
Obtén el número estimado de documentos que coinciden con la query.
A diferencia de count, estimated_count no toma un bloque porque no está definido tradicionalmente (con un bloque) en Enumerable como lo está count.
97 98 99 100 101 102 103 104 105 106 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 97 def recuento estimado( = {}) a menos que sí mismo.criterios.selector.¿vacío? si klass.default_scoping? propagar Mongoid::Errors::Alcance de conteo estimado no válido.Nuevo(sí mismo.klass) else propagar Mongoid::Errors::InvalidEstimatedCountCriteria.Nuevo(sí mismo.klass) end end vista.estimated_document_count() end |
#¿exists?(id_or_conditions = :none) ⇒ true | false
No utilizamos el conteo aquí ya que Mongo no utiliza índices de árboles b contados.
¿Existe algún documento para el contexto?
190 191 192 193 194 195 196 197 198 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 190 def ¿existe?(id_or_conditions = :ninguno) return false si sí mismo.vista.limit == 0 caso id_or_conditions Cuando :ninguno entonces !!(vista.proyección(_id: 1).limit(1).primero) Cuando nulo, false entonces false Cuando Picadillo entonces Mongo.Nuevo(criterios.dónde(id_or_conditions)).¿existe? else Mongo.Nuevo(criterios.dónde(_id: id_or_conditions)).¿existe? end end |
#quinto ⇒ Documento | nulo
Obtén el quinto documento en la base de datos para el selector de los criterios.
699 700 701 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 699 def quinto retrieve_nth(4) end |
#quinto! ⇒ Documento
Obten el quinto documento en la base de datos para el selector de criterios o genera un error si no se encuentra ninguno.
713 714 715 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 713 def ¡quinto! quinto || raise_document_not_found_error end |
#find_first ⇒ 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.
Devuelve el primer resultado sin aplicar ordenación
256 257 258 259 260 261 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 256 def encontrar_primero si raw_doc = vista.primero doc = Fábrica.desde_db(klass, raw_doc, criterios) eager_load([doc]).primero end end |
#find_one_and_delete ⇒ Documento
Ejecute el comando "Buscar y modificar", utilizado para "$findAndModify" de MongoDB. Esto elimina el documento encontrado.
247 248 249 250 251 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 247 def encontrar_uno_y_eliminar si doc = vista.encontrar_uno_y_eliminar Fábrica.desde_db(klass, doc) end end |
#find_one_and_replace(replacement, opciones = {}) ⇒ documento
Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.
234 235 236 237 238 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 234 def find_one_and_replace(sustitución, = {}) si doc = vista.find_one_and_replace(sustitución, ) Fábrica.desde_db(klass, doc) end end |
#find_one_and_update(update, options = {}) ⇒ Document
Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.
214 215 216 217 218 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 214 def find_one_and_update(update, = {}) si doc = vista.find_one_and_update(update, ) Fábrica.desde_db(klass, doc) end end |
#primero(límite = nulo) ⇒ Documento | nulo También conocido como: uno
Añadir automáticamente una ordenación a _id cuando no hay otra definida en los criterios puede causar problemas de rendimiento. Si experimenta un rendimiento deficiente inesperado al usar #first o #last y no tiene ninguna ordenación definida en los criterios, utilice #take en su lugar. Tenga en cuenta que #take no garantiza el orden.
Obtén el primer documento en la base de datos para el selector de criterios.
550 551 552 553 554 555 556 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 550 def primero(limit = nulo) si limit.nil? retrieve_nth(0) else retrieve_nth_with_limit(0, limit) end end |
#first! ⇒ Document
"Agregar automáticamente un ordenamiento en _id cuando no hay otro ordenamiento definido en los criterios tiene el potencial de causar problemas de rendimiento." Si experimenta un rendimiento deficiente inesperado al usar #first! o #last! y no tiene un orden definido en los criterios, use #take! en su lugar. Debe tener en cuenta que #take! no garantiza el orden.
Obtener el primer documento en la base de datos para el selector de los criterios o generar un error si no se encuentra ninguno.
575 576 577 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 575 def ¡primero! primero || raise_document_not_found_error end |
#cuarto ⇒ Documento | nil
Obtén el cuarto documento en la base de datos para el selector de los criterios.
675 676 677 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 675 def cuarto retrieve_nth(3) end |
#¡cuarto! ⇒ Documento
Obtenga el cuarto documento en la base de datos para el selector de los criterios o genere un error si no se encuentra ninguno.
689 690 691 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 689 def ¡cuarto! cuarto || raise_document_not_found_error end |
#last(limit = nil) ⇒ Document | nil
Añadir automáticamente una ordenación a _id cuando no hay otra definida en los criterios puede causar problemas de rendimiento. Si experimenta un rendimiento deficiente inesperado al usar #first o #last y no tiene ninguna ordenación definida en los criterios, utilice #take en su lugar. Tenga en cuenta que #take no garantiza el orden.
Obtén el último documento en la base de datos según el selector de los criterios.
593 594 595 596 597 598 599 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 593 def último(limit = nulo) si limit.nil? retrieve_nth_to_last(0) else retrieve_nth_to_last_with_limit(0, limit) end end |
#last! ⇒ Document
"Agregar automáticamente un ordenamiento en _id cuando no hay otro ordenamiento definido en los criterios tiene el potencial de causar problemas de rendimiento." Si experimenta un rendimiento deficiente inesperado al usar #first! o #last! y no tiene un orden definido en los criterios, use #take! en su lugar. Debe tener en cuenta que #take! no garantiza el orden.
Obtener el último documento en la base de datos para el selector de criterios o generar un error si no se encuentra ninguno.
617 618 619 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 617 def ¡último! último || raise_document_not_found_error end |
#longitud ⇒ Integer También conocido como: tamaño
Devuelve el número de documentos en la base de datos que coinciden con el selector de la query.
287 288 289 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 287 def longitud sí mismo.count end |
#límite(valor) ⇒ Mongo
Limita la cantidad de documentos que se devuelven en la base de datos.
300 301 302 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 300 def limit(Valor) @view = vista.limit(Valor) y sí mismo end |
#load_async ⇒ Object
Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.
Programa un cronograma para cargar documentos para el contexto.
Dependiendo de la configuración de Mongoid, la tarea programada puede ejecutarse inmediatamente en el hilo de quien la llama o programarse para una ejecución asíncrona.
776 777 778 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 776 def cargar_asincrónicamente @documentos_loader ||= DocumentsLoader.Nuevo(vista, klass, criterios) end |
#map_reduce(map, reduce) ⇒ MapReduce
Inicia una operación de map/reduce desde el contexto.
313 314 315 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 313 def mapa_reducir(map, disminuir) mapReduce.Nuevo(Colección, criterios, map, disminuir) end |
#seleccionar(*campos) ⇒ Objeto | Matriz<Object>
Elije los valores de un solo campo de la base de datos.
361 362 363 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 361 def elegir(*campos) limit(1).pluck(*campos).primero end |
#pluck(*campos) ⇒ Array<Object> | Array<Array<Object>>
Extrae los valores de los campos de la base de datos. Devuelve un resultado por cada documento encontrado en la base de datos para el contexto. Los resultados se normalizan según los tipos de campo Mongoid. Tenga en cuenta que los resultados pueden incluir duplicados y valores nulos.
333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 333 def pluck(*campos) # Varios campos pueden mapearse al mismo nombre de campo. Por ejemplo, arrancar # un campo y su campo _translations se asignan al mismo campo en la base de datos. # debido a esto, necesitamos rastrear los campos solicitados. nombres_de_campos_normalizados = [] selección normalizada = campos.inyectar({}) hacer |hash, f| db_fn = klass.database_field_name(f) nombres_de_campos_normalizados.push(db_fn) hash[klass.cleanse_localized_field_names(f)] = true hash end vista.proyección(selección normalizada).disminuir([]) hacer |desplumado, doc| values = nombres_de_campos_normalizados.map hacer |n| extract_value(doc, n) end desplumado << (values.tamaño == 1 ? values.primero : values) end end |
#segundo ⇒ Documento | nil
Obtenga el segundo documento en la base de datos para el selector de criterios.
627 628 629 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 627 def segundo retrieve_nth(1) end |
#segundo! ⇒ Documento
Obtén el segundo documento en la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
641 642 643 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 641 def ¡segundo! segundo || raise_document_not_found_error end |
#second_to_last ⇒ Documento | nil
Obtenga el penúltimo documento en la base de datos para el selector de criterios.
Se encuentra.
725 726 727 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 725 def penúltimo retrieve_nth_to_last(1) end |
#segundo_a_ultimo! ⇒ Documento
Obtenga el segundo último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
739 740 741 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 739 def second_to_last! penúltimo || raise_document_not_found_error end |
#saltar(valor) ⇒ Mongo
Omite el número de documentos proporcionado.
480 481 482 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 480 def Omitir(Valor) @view = vista.Omitir(Valor) y sí mismo end |
#sort(values = nil, &block) ⇒ Mongo
Ordena los documentos según la especificación proporcionada.
493 494 495 496 497 498 499 500 501 502 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 493 def sort(values = nulo, Ybloque) si ¿block_given? super(Ybloque) else # actualizar los criterios @criteria = criterios.ordenar por(values) aplicar_opción(:sort) sí mismo end end |
#take(limit = nil) ⇒ Document | Array<Document>
Tome el número de documentos dado de la base de datos.
374 375 376 377 378 379 380 381 382 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 374 def tomar(limit = nulo) si limit limit(limit).to_a else # Haz to_a primero para que el método Mongo#first no se utilice y # el resultado no está ordenado. limit(1).to_a.primero end end |
#take! ⇒ Document
Tome un documento de la base de datos y genere un error si no hay ninguno.
393 394 395 396 397 398 399 400 401 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 393 def ¡toma! # Haz to_a primero para que el método Mongo#first no se utilice y # el resultado no está ordenado. si fst = limit(1).to_a.primero fst else propagar Errors::Documento no encontrado.Nuevo(klass, nulo, nulo) end end |
#tally(campo) ⇒ Hash
Obtén un resumen de recuentos para los valores de un solo campo. Por ejemplo, si los siguientes documentos estuvieran en la base de datos:
{ _id: 1, age: 21 }
{ _id: 2, age: 21 }
{ _id: 3, age: 22 }
Model.tally("age")
produciría el siguiente resultado:
{ 21 => 2, 22 => 1 }
Al contar un campo dentro de una asociación de arreglo o embeds_many:
{ _id: 1, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 2, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 3, array: [ { x: 1 }, { x: 3 } ] }
Model.tally("array.x")
Las claves del hash resultante son matrices:
{ [ 1, 2 ] => 2, [ 1, 3 ] => 1 }
Tenga en cuenta que, si se cuenta un elemento en un arreglo de hashes y la clave no existe en algunos de los hashes, tally no incluirá esas claves nil en el hash resultante:
{ _id: 1, array: [ { x: 1 }, { x: 2 }, { y: 3 } ] }
Model.tally("array.x")
# => { [ 1, 2 ] => 1 }
440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 440 def cómputo(Campo) Nombre = klass.cleanse_localized_field_names(Campo) fld = klass.árbol de asociación transversal(Nombre) pipeline = [ { "$group" => { _id: "$#{name}", cuentas: { " $sum ": 1 ] pipeline. unshift ( " $match " => view. filter ) unless view. filter. blank? collection. added ( pipeline ). reduce ( { } ) do | tallies, doc | is_translation = " #{ name } _translations " == field. to_s val = doc [ " _id " ] key = if val. is_a? ( Array ) val. map do | v | demongoize_with_field ( fld, v, is_translation ) end else demongoize_with_field ( fld, val, is_translation ) end # La única ocasión en la que ya existirá una clave en el hash de tallies # es cuando los valores se almacenan de forma diferente en la base de datos, pero # se demongoizan al mismo valor. Un buen ejemplo de cuándo sucede esto # es al usar campos localizados. Si bien la consulta del servidor no agrupará # hashes que tienen otros valores en diferentes idiomas, el # valor demonizado es solo la traducción en la configuración regional actual, # que puede ser la misma en varios de esos hashes desiguales. tallies [ clave ] ||=0tallies [ clave ] += doc [ " counts " ] tallies end end |
#tercero ⇒ Documento | nulo
Obtenga el tercer documento en la base de datos para el selector de criterios.
651 652 653 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 651 def tercero retrieve_nth(2) end |
#¡Tercero! ⇒ Documento
Obtén el tercer documento de la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
665 666 667 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 665 def ¡tercero! tercero || raise_document_not_found_error end |
#tercero_anteúltimo ⇒ Documento | nil
Obtén el tercer documento antes del último en la base de datos para el selector de los criterios.
Se encuentra.
751 752 753 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 751 def antepenúltimo retrieve_nth_to_last(2) end |
#antepenúltimo! ⇒ Documento
Obtén el tercer documento desde el final en la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.
765 766 767 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 765 def antepenúltimo! antepenúltimo || raise_document_not_found_error end |
#update(attributes = nil, opts = {}) ⇒ nil | false
Actualiza el primer documento coincidente de forma atómica.
516 517 518 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 516 def update(atributos = nulo, opta = {}) update_documents(atributos, :update_one, opta) end |
#update_all(attributes = nil, opts = {}) ⇒ nil | false
Actualiza todos los documentos coincidentes de manera atómica.
532 533 534 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 532 def update_all(atributos = nulo, opta = {}) update_documents(atributos, :update_many, opta) end |