Clase: Mongoid::Contextual::Mongo
- Hereda:
-
Objeto
- Objeto
- Mongoid::Contextual::Mongo
- Ampliado por:
- Reenviable
- Incluye:
- Enumerable, Asociación::EagerLoadable, Atómico, Agregable::Mongo, Consultable
- 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 en el espacio de nombres
Clases: DocumentsLoader
Colapso delresumen constante
- OPCIONES =
Opciones constantes.
[ :hint, :limit, :saltar, :sort, :tamaño_del_lote, :máximo_escaneo, :tiempo máximo_ms, :instantánea, :comment, :leer, :tipo_de_cursor, :colación ].freeze
Constantes incluidas de Atomic
Colapso delresumen de atributos de instancia
-
#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 en 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.
Colapso del resumen del método de instancia
-
#count(opciones = {}, &block) ⇒ Entero
Obtenga el número de documentos que coinciden con la consulta.
-
#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.
-
#distinto(campo) ⇒ Matriz<Object>
Obtenga los valores distintos en la base de datos para el campo proporcionado.
-
#cada(&bloque) ⇒ Enumerador
Iterar sobre el contexto.
-
#recuento_estimado(opciones = {}) ⇒ Entero
Obtenga el número estimado de documentos que coinciden con la consulta.
-
#¿existe?(id_or_conditions =:none) ⇒ verdadero | falso
¿Existe algún documento para el contexto?
-
#quinto ⇒ Documento | nulo
Obtenga el quinto documento en la base de datos para el selector de criterios.
-
#quinto! ⇒ Documento
Obtenga el quinto documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#find_first ⇒ Objeto
privada
Devuelve el primer resultado sin aplicar ordenación.
-
#buscar_uno_y_eliminar ⇒ Documento
Ejecute el comando de búsqueda y modificación, utilizado para $findAndModify de MongoDB.
-
#buscar_uno_y_reemplazar(reemplazo, opciones = {}) ⇒ Documento
Ejecute el comando de búsqueda y modificación, utilizado para $findAndModify de MongoDB.
-
#find_one_and_update(update, options = {}) ⇒ Document
Ejecute el comando de búsqueda y modificación, utilizado para $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
Obtenga el primer documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#cuarto ⇒ Documento | nulo
Obtenga el cuarto documento en la base de datos para el selector de criterios.
-
#cuarto! ⇒ Documento
Obtenga el cuarto documento en la base de datos para el selector de 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
Obtener el último documento en la base de datos para el selector de criterios.
-
#last! ⇒ Document
Obtenga el último documento en la base de datos para el selector de criterios o genere 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 consulta.
-
#límite(valor) ⇒ Mongo
Limita la cantidad de documentos que se devuelven desde la base de datos.
-
#load_async ⇒ Objeto
privada
Programa un cronograma para cargar documentos para el contexto.
-
#map_reduce(mapa, reducir) ⇒ MapReduce
Iniciar una operación de mapa/reducción desde el contexto.
-
#seleccionar(*campos) ⇒ Objeto | Matriz<Object>
Seleccione los valores de campo individuales de la base de datos.
-
#pluck(*campos) ⇒ Matriz<Object> | Matriz<Matriz<Object>>
Extraiga los valores del campo de la base de datos.
-
#segundo ⇒ Documento | nulo
Obtenga el segundo documento en la base de datos para el selector de criterios.
-
#segundo! ⇒ Documento
Obtenga el segundo documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#penúltima ⇒ Documento | nulo
Obtener el segundo ú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 dado de documentos de la base de datos.
-
#take! ⇒ Document
Tome un documento de la base de datos y genere un error si no hay ninguno.
-
#tally(campo) ⇒ 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
Obtenga el tercer documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#antepenúltimo ⇒ Documento | nulo
Obtener el tercer último documento en la base de datos para el selector de criterios.
-
#antepenúltimo! ⇒ Documento
Obtenga el tercer último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
-
#update(attributes = nil, opts = {}) ⇒ nil | false
Actualice atómicamente el primer documento coincidente.
-
#update_all(attributes = nil, opts = {}) ⇒ nil | false
Actualice todos los documentos coincidentes de forma atómica.
Métodos incluidos de Queryable
Métodos incluidos en Association::EagerLoadable
#carga_ansiosa, #cargable_ansiosa?, #precarga
Métodos incluidos de Atomic
#añadir_extracción_atómica, #añadir_desactivación_atómica, #matriz_atómica_añadir_a_conjuntos, #extracciones_matriz_atómica, #inserciones_matriz_atómica, #nombre_atributo_atómico, #modificador_eliminación_atómico, #modificador_inserción_atómico, #ruta_atómica, #rutas_atómicas, #posición_atómica, #extracciones_atómicas, #inserciones_atómicas, #conjuntos_atómicos, #desactivaciones_atómicas,#actualizaciones_atómicas,#extracciones_atómicas_retrasadas, #conjuntos_atómicos_retrasados, #desactivaciones_atómicas_retrasadas, #marcar_como_destruido, #destrucciones_marcadas, #proceso_destrucciones_marcadas
Métodos incluidos de Aggregable::Mongo
#agregados, #promedio, #máx, #mín, #suma
Detalles del constructor
#inicializar(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 @recopilación = @klass.Colección criterios.Enviar(:selección_de_tipo_de_fusión) @view = Colección.buscar(criterios.selector, sesión: _sesión) end |
Detalles de los atributos de instancia
#documents_loader ⇒ Objeto (solo lectura)
Devuelve el valor del atributo documents_loader.
54 55 56 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 54 def cargador de documentos @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 |
#view La vista de colección de Mongo.(TheMongocollectionview.) ⇒ Objeto (solo lectura)
42 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 42 lector de atributos :vista |
Detalles del método de instancia
#count(opciones = {}, &block) ⇒ Entero
Obtenga el número de documentos que coinciden con la consulta.
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 ¿bloque_dado? Si ¿válido para contar documentos? vista.contar_documentos() else # TODO: Eliminar esto cuando eliminemos la API for_js obsoleta. # https://jira.mongodb.org/browse/MONGOID-5681 vista.count() end end |
#delete ⇒ nil 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.eliminar_muchos.recuento eliminado end |
#destroy ⇒ 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) ⇒ Matriz<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.limpiar_nombres_de_campos_localizados(Campo) vista.distinct(Nombre).map hacer |valor| es_traducción = "#{nombre}_traducciones" == Campo.a_s recursivo_demongoize(Nombre, valor, es_traducción) end end |
#cada(&bloque) ⇒ Enumerador
Itera sobre el contexto. Si se proporciona un bloque, se genera un documento Mongoid para cada uno; de lo contrario, se devuelve una enumeración.
160 161 162 163 164 165 166 167 168 169 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 160 def cada(Ybloque) Si ¿bloque_dado? documentos_para_iteración.cada hacer |doc| documento de rendimiento(doc, Ybloque) end yo else to_enum end end |
#recuento_estimado(opciones = {}) ⇒ Entero
Obtenga el número estimado de documentos que coinciden con la consulta.
A diferencia de count, estimate_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 no ser que yo.criterios.selector.¿vacío? Si klass.¿alcance predeterminado? propagar Mongoid::Errors::Alcance de recuento estimado no válido.Nuevo(yo.klass) else propagar Mongoid::Errors::InvalidEstimatedCountCriteria.Nuevo(yo.klass) end end vista.recuento estimado de documentos() end |
#¿existe?(id_or_conditions =:none) ⇒ verdadero | falso
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_o_condiciones = :ninguno) return false Si yo.vista.limit == 0 caso id_o_condiciones Cuando :ninguno entonces !!(vista.proyección(_id: 1).limit(1).primera) Cuando nulo, false entonces false Cuando Picadillo entonces Mongo.Nuevo(criterios.donde(id_o_condiciones)).¿Existe? else Mongo.Nuevo(criterios.donde(_id: id_o_condiciones)).¿Existe? end end |
#quinto ⇒ Documento | nulo
Obtenga el quinto documento en la base de datos para el selector de criterios.
699 700 701 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 699 def quinto retrieve_nth(4) end |
#quinto! ⇒ Documento
Obtenga el quinto documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
713 714 715 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 713 def ¡quinto! quinto || generar error de documento no encontrado 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 documento sin procesar = vista.primera doc = Fábrica.desde_db(klass, documento sin procesar, criterios) carga ansiosa([doc]).primera end end |
#buscar_uno_y_eliminar ⇒ 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 |
#buscar_uno_y_reemplazar(reemplazo, opciones = {}) ⇒ Documento
Ejecute el comando de búsqueda y modificación, utilizado para $findAndModify de MongoDB.
234 235 236 237 238 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 234 def encontrar_uno_y_reemplazar(sustitución, = {}) Si doc = vista.encontrar_uno_y_reemplazar(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 $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 primera(limit = nulo) Si limit.nil? retrieve_nth(0) else retrieve_nth_with_limit(0, limit) end end |
#first! ⇒ Document
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 una ordenación definida en los criterios, use #take! en su lugar. Tenga en cuenta que #take! no garantiza el orden.
Obtenga el primer documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
575 576 577 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 575 def ¡primero! primera || generar error de documento no encontrado end |
#cuarto ⇒ Documento | nulo
Obtenga el cuarto documento en la base de datos para el selector de 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 criterios o genere un error si no se encuentra ninguno.
689 690 691 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 689 def ¡cuatro! cuarto || generar error de documento no encontrado 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.
Obtener el último documento en la base de datos para el selector de criterios.
593 594 595 596 597 598 599 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 593 def última(limit = nulo) Si limit.nil? retrieve_nth_to_last(0) else retrieve_nth_to_last_with_limit(0, limit) end end |
#last! ⇒ Document
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 una ordenación definida en los criterios, use #take! en su lugar. Tenga en cuenta que #take! no garantiza el orden.
Obtenga el último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
617 618 619 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 617 def ¡último! última || generar error de documento no encontrado end |
#longitud ⇒ Entero También conocido como: tamaño
Devuelve el número de documentos en la base de datos que coinciden con el selector de consulta.
287 288 289 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 287 def longitud yo.count end |
#límite(valor) ⇒ Mongo
Limita la cantidad de documentos que se devuelven desde la base de datos.
300 301 302 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 300 def limit(valor) @view = vista.limit(valor) y yo end |
#load_async ⇒ 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.
Programa un cronograma para cargar documentos para el contexto.
Dependiendo de la configuración de Mongoid, la tarea programada se puede ejecutar inmediatamente en el hilo del llamador o se puede programar para una ejecución asincrónica.
776 777 778 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 776 def carga_asincrónica @documentos_loader ||= DocumentsLoader.Nuevo(vista, klass, criterios) end |
#map_reduce(mapa, reducir) ⇒ MapReduce
Iniciar una operación de mapa/reducción desde el contexto.
313 314 315 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 313 def mapa_reducir(map, reducir) MapReduce.Nuevo(Colección, criterios, map, reducir) end |
#seleccionar(*campos) ⇒ Objeto | Matriz<Object>
Seleccione los valores de campo individuales de la base de datos.
361 362 363 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 361 def picking(*campos) limit(1).arrancar(*campos).primera end |
#pluck(*campos) ⇒ Matriz<Object> | Matriz<Matriz<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 arrancar(*campos) # Se pueden asignar varios campos 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 realizar un seguimiento de los campos solicitados. nombres de campos normalizados = [] selección normalizada = campos.inyectar({}) hacer |hash, f| db_fn = klass.nombre_del_campo_de_base_de_datos(f) nombres de campos normalizados.Push(db_fn) hash[klass.limpiar_nombres_de_campos_localizados(f)] = true hash end vista.proyección(selección normalizada).reducir([]) hacer |desplumado, doc| values = nombres de campos normalizados.map hacer |n| extraer_valor(doc, n) end desplumado << (values.tamaño == 1 ? values.primera : values) end end |
#segundo ⇒ Documento | nulo
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
Obtenga el segundo documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
641 642 643 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 641 def ¡segundo! segundo || generar error de documento no encontrado end |
#penúltimo ⇒ Documento | nulo
Obtener el segundo ú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 |
#¡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.
739 740 741 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 739 def second_to_last! penúltimo || generar error de documento no encontrado 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 yo 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 ¿bloque_dado? Super(Ybloque) else # actualizar los criterios @criteria = criterios.ordenar por(values) aplicar_opción(:sort) yo end end |
#take(limit = nil) ⇒ Document | Array<Document>
Tome el número dado de documentos 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 # Haga to_a primero para que no se utilice el método Mongo#first y el # el resultado no está ordenado. limit(1).to_a.primera 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 ¡llevar! # Haga to_a primero para que no se utilice el método Mongo#first y el # el resultado no está ordenado. Si primero = limit(1).to_a.primera primero else propagar Errors::Documento no encontrado.Nuevo(klass, nulo, nulo) end end |
#tally(campo) ⇒ Hash
Obtener un hash de los recuentos de 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 matriz o asociación 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 una matriz de hashes y la clave no existe en algunos de los hashes, el recuento no incluirá esas claves nulas 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 cuenta(Campo) Nombre = klass.limpiar_nombres_de_campos_localizados(Campo) campo = klass.árbol de asociación transversal(Nombre) pipeline = [ { "$grupo" => { _id: "$#{nombre}", cuenta: { " $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
Obtenga el tercer documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
665 666 667 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 665 def ¡tercero! tercero || generar error de documento no encontrado end |
#antepenúltimo ⇒ Documento | nulo
Obtener el tercer último documento en la base de datos para el selector de 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
Obtenga el tercer último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.
765 766 767 |
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 765 def antepenúltimo! antepenúltimo || generar error de documento no encontrado end |
#update(attributes = nil, opts = {}) ⇒ nil | false
Actualice atómicamente el primer documento coincidente.
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
Actualice todos los documentos coincidentes de forma 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 |