Clase: Mongoid::Contextual::Mongo

Hereda:
Objeto
  • Objeto
Mostrar todo
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

Atomic::UPDATES

Colapso delresumen de atributos de instancia

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

Métodos incluidos de Queryable

#blank?

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.

Ejemplos:

Crea el nuevo contexto.

Mongo.new(criteria)

Parámetros:



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)
  aplicar_opciones
end

Detalles de los atributos de instancia

#documents_loaderObjeto (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

#vistaHash (solo lectura)

Ejecuta una explicación sobre los criterios.

Ejemplos:

Explique los criterios.

Band.where(name: "Depeche Mode").explain

Parámetros:

  • opciones (Hash)

    opciones personalizables (consulte Mongo::Collection::View::Explainable)

Devuelve:

  • (Hash)

    El resultado explicado.



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.

Ejemplos:

Obtenga el número de documentos coincidentes.

context.count

Obtenga el recuento de documentos con las opciones proporcionadas.

context.count(limit: 1)

Obtenga el recuento de dónde el bloque proporcionado es verdadero.

context.count do |doc|
  doc.likes > 1
end

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Las opciones, como saltar y limitar, se tendrán en cuenta en el recuento.

Devuelve:

  • (Entero)

    El número de partidos.



73
74
75
76
77
78
79
80
81
82
83
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 73

def count(opciones = {}, Ybloque)
  return Super(Ybloque) Si ¿bloque_dado?

  Si ¿válido para contar documentos?
    vista.contar_documentos(opciones)
  else
    # TODO: Eliminar esto cuando eliminemos la API for_js obsoleta.
    # https://jira.mongodb.org/browse/MONGOID-5681
    vista.count(opciones)
  end
end

#deletenil También conocido como: delete_all

Eliminar todos los documentos de la base de datos que coincidan con el selector.

Ejemplos:

Eliminar todos los documentos.

context.delete

Devuelve:

  • (nil)

    Nil.



114
115
116
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 114

def borrar
  vista.eliminar_muchos.recuento eliminado
end

#destroynil También conocido como: destroy_all

Destruye todos los documentos en la base de datos que coincidan con el selector.

Ejemplos:

Destruye todos los documentos.

context.destroy

Devuelve:

  • (nil)

    Nil.



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.

Ejemplos:

Obtenga los valores distintos.

context.distinct(:name)

Parámetros:

  • Campo (Cadena | Símbolo)

    El nombre del campo.

Devuelve:

  • (Matriz<Object>)

    Los valores distintos para el campo.



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.

Ejemplos:

Iterar sobre el contexto.

context.each do |doc|
  puts doc.name
end

Devuelve:

  • (Enumerator)

    El enumerador.



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.

Ejemplos:

Obtenga el número estimado de documentos coincidentes.

context.estimated_count

Parámetros:

  • opciones (Hash) (predeterminado: {})

    Las opciones, como maxTimeMS, que se tendrán en cuenta en el recuento.

Devuelve:

  • (Entero)

    El número de partidos.



97
98
99
100
101
102
103
104
105
106
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 97

def recuento estimado(opciones = {})
  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(opciones)
end

#¿existe?(id_or_conditions =:none) ⇒ verdadero | falso

Nota:

No utilizamos el conteo aquí ya que Mongo no utiliza índices de árboles b contados.

¿Existe algún documento para el contexto?

Ejemplos:

¿Existe algún documento para el contexto?

context.exists?

¿Existe algún documento para el _id dado?

context.exists?(BSON::ObjectId(...))

¿Existen documentos para las condiciones dadas?

context.exists?(name: "...")

Parámetros:

  • id_o_condiciones (Hash | Objeto | falso) (predeterminado::ninguno)

    un _id para buscar, un hash de condiciones, nulo o falso.

Devuelve:

  • (verdadero | falso)

    Si el recuento es mayor que cero, siempre falso si se pasa nulo o falso.



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

#quintoDocumento | nulo

Obtenga el quinto documento en la base de datos para el selector de criterios.

Ejemplos:

Obtén el quinto documento.

context.fifth

Devuelve:

  • (Document | nil)

    El quinto documento o nulo si no se encuentra ninguno.



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.

Ejemplos:

Obtén el quinto documento.

context.fifth!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



713
714
715
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 713

def ¡quinto!
  quinto || generar error de documento no encontrado
end

#find_firstObjeto

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_eliminarDocumento

Ejecute el comando "Buscar y modificar", utilizado para "$findAndModify" de MongoDB. Esto elimina el documento encontrado.

Ejemplos:

Ejecutar el comando.

context.find_one_and_delete

Devuelve:



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.

Ejemplos:

Ejecutar el comando.

context.find_one_and_update({ likes: 1 })

Parámetros:

  • sustitución (Hash)

    El reemplazo.

  • opciones (Hash) (predeterminado: {})

    Las opciones del comando.

Opciones Hash(opciones):

  • :devolver_documento (:antes |:después)

    Devuelve el documento actualizado de antes o después de actualizar.

  • :upsert (true | false)

    Crea el documento si no existe.

Devuelve:



234
235
236
237
238
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 234

def encontrar_uno_y_reemplazar(sustitución, opciones = {})
  Si doc = vista.encontrar_uno_y_reemplazar(sustitución, opciones)
    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.

Ejemplos:

Ejecutar el comando.

context.find_one_and_update({ "$inc" => { likes: 1 }})

Parámetros:

  • update (Hash)

    Las actualizaciones.

  • opciones (Hash) (predeterminado: {})

    Las opciones del comando.

Opciones Hash(opciones):

  • :devolver_documento (:antes |:después)

    Devuelve el documento actualizado de antes o después de actualizar.

  • :upsert (true | false)

    Crea el documento si no existe.

Devuelve:



214
215
216
217
218
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 214

def find_one_and_update(update, opciones = {})
  Si doc = vista.find_one_and_update(update, opciones)
    Fábrica.desde_db(klass, doc)
  end
end

#primero(límite = nulo) ⇒ Documento | nulo También conocido como: uno

Nota:

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.

Ejemplos:

Obtenga el primer documento.

context.first

Parámetros:

  • limit (Entero) (predeterminado: nulo)

    El número de documentos a devolver.

Devuelve:

  • (Document | nil)

    El primer documento o nulo si no se encuentra ninguno.



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

Nota:

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.

Ejemplos:

Obtenga el primer documento.

context.first!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



575
576
577
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 575

def ¡primero!
  primera || generar error de documento no encontrado
end

#cuartoDocumento | nulo

Obtenga el cuarto documento en la base de datos para el selector de criterios.

Ejemplos:

Obtén el cuarto documento.

context.fourth

Devuelve:

  • (Document | nil)

    El cuarto documento o nulo si no se encuentra ninguno.



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.

Ejemplos:

Obtén el cuarto documento.

context.fourth!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



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

Nota:

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.

Ejemplos:

Obtenga el último documento.

context.last

Parámetros:

  • limit (Entero) (predeterminado: nulo)

    El número de documentos a devolver.

Devuelve:

  • (Document | nil)

    El último documento o nulo si no se encuentra ninguno.



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

Nota:

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.

Ejemplos:

Obtenga el último documento.

context.last!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



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.

Ejemplos:

Obtenga la longitud.

context.length

Devuelve:

  • (Entero)

    El número de documentos.



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.

Ejemplos:

Limitar los documentos.

context.limit(20)

Parámetros:

  • valor (Entero)

    El número de documentos a devolver.

Devuelve:



300
301
302
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 300

def limit(valor)
  @view = vista.limit(valor) y  yo
end

#load_asyncObjeto

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.

Ejemplos:

Iniciar un mapa/reducción.

context.map_reduce(map, reduce)

Parámetros:

  • map (Cadena) -

    La función map js.

  • reducir (Cadena) -

    La función reduce js.

Devuelve:

  • (MapReduce)

    El contenedor de mapa/reducción perezoso.



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.

Ejemplos:

Elige un campo.

context.pick(:_id)

Parámetros:

  • *campos ([ Cadena | Símbolo ]... ) —

    Campo(s) a escoger.

Devuelve:

  • (Objeto|<Object> Matriz)

    Los valores seleccionados.



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.

Ejemplos:

Desplumar un campo.

context.pluck(:_id)

Parámetros:

  • *campos ([ Cadena | Símbolo ]... ) —

    Campo(s) a seleccionar, que pueden incluir campos anidados mediante notación de puntos.

Devuelve:

  • (Matriz<Object> | Matriz<Matriz<Object>>)

    Los valores extraídos. Si el argumento *fields contiene un solo valor, cada resultado de la matriz será un solo valor. De lo contrario, cada resultado de la matriz será una matriz de valores.



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

#segundoDocumento | nulo

Obtenga el segundo documento en la base de datos para el selector de criterios.

Ejemplos:

Obtenga el segundo documento.

context.second

Devuelve:

  • (Document | nil)

    El segundo documento o nulo si no se encuentra ninguno.



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.

Ejemplos:

Obtenga el segundo documento.

context.second!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



641
642
643
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 641

def ¡segundo!
  segundo || generar error de documento no encontrado
end

#penúltimoDocumento | nulo

Obtener el segundo último documento en la base de datos para el selector de criterios.

se encuentra

Ejemplos:

Obtenga el segundo último documento.

context.second_to_last

Devuelve:

  • (Document | nil)

    El segundo al último documento o nulo si no hay ninguno



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.

Ejemplos:

Obtenga el segundo último documento.

context.second_to_last!

Devuelve:

  • (Documento) -

    El segundo último documento.

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



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.

Ejemplos:

Saltar los documentos.

context.skip(20)

Parámetros:

  • valor (Entero)

    El número de documentos a omitir.

Devuelve:



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.

Ejemplos:

Ordenar los documentos.

context.sort(name: -1, title: 1)

Parámetros:

  • values (Hash) (predeterminado: nulo)

    El ordenamiento de los valores como pares campo/dirección(1/-1).

Devuelve:



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.

Ejemplos:

Tomar 10 documentos

context.take(10)

Parámetros:

  • limit (Integer | nil) (predeterminado: nulo)

    El número de documentos a devolver o nulo.

Devuelve:

  • (Document | Array<Document>)

    La lista de documentos, o un documento si no se proporcionó ningún valor.



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.

Ejemplos:

Tomar un documento

context.take!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos que llevar.



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 }

Parámetros:

  • Campo (Cadena | Símbolo)

    El nombre del campo.

Devuelve:

  • (Hash)

    El hash de los recuentos.



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

#terceroDocumento | nulo

Obtenga el tercer documento en la base de datos para el selector de criterios.

Ejemplos:

Obtén el tercer documento.

context.third

Devuelve:

  • (Document | nil)

    El tercer documento o nulo si no se encuentra ninguno.



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.

Ejemplos:

Obtén el tercer documento.

context.third!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



665
666
667
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 665

def ¡tercero!
  tercero || generar error de documento no encontrado
end

#antepenúltimoDocumento | nulo

Obtener el tercer último documento en la base de datos para el selector de criterios.

se encuentra

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last

Devuelve:

  • (Document | nil)

    El tercer documento antes del último o nulo si no hay ninguno



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.

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last!

Devuelve:

Aumentos:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos disponibles.



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.

Ejemplos:

Actualice el primer documento coincidente.

context.update({ "$set" => { name: "Smiths" }})

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para el documento.

  • opta (Hash) (predeterminado: {})

    Las opciones de la operación de actualización.

Opciones Hash (opts):

  • :filtros_de_matriz (arreglo)

    Un conjunto de filtros que especifican a qué elementos de la matriz debe aplicarse una actualización.

Devuelve:

  • (nulo | falso)

    Falso si no se proporcionaron atributos.



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.

Ejemplos:

Actualice todos los documentos coincidentes.

context.update_all({ "$set" => { name: "Smiths" }})

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para cada documento.

  • opta (Hash) (predeterminado: {})

    Las opciones de la operación de actualización.

Opciones Hash (opts):

  • :filtros_de_matriz (arreglo)

    Un conjunto de filtros que especifican a qué elementos de la matriz debe aplicarse una actualización.

Devuelve:

  • (nulo | falso)

    Falso si no se proporcionaron atributos.



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