Clase: Mongoid::Contextual::Mongo

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

Atomic::UPDATES

Resumen de atributos de la instancia colapsar

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

Métodos incluidos de Queryable

#blank?

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.

Ejemplos:

Cree 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
  @colección = @klass.Colección
  criterios.enviar(:merge_type_selection)
  @view = Colección.buscar(criterios.selector, sesión: _sesión)
  aplicar_opciones
end

Detalles de los atributos de instancia

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

#vistaHash (solo lectura)

Ejecuta una explicación sobre los criterios.

Ejemplos:

Explique los criterios.

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

Parámetros:

  • opciones (encriptada)

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

Devuelve:

  • (encriptada)

    El resultado de la explicación.



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.

Ejemplos:

Obtiene el número de documentos coincidentes.

context.count

Obtiene 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) (por defecto: {})

    Las opciones, como saltar y limitar, deben tenerse en cuenta en el conteo.

Devuelve:

  • (Número 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 ¿block_given?

  si valid_for_count_documents?
    vista.contar_documentos(opciones)
  else
    # TODO: Remueve esto cuando quitemos la API for_js obsoleta.
    # https://jira.mongodb.org/browse/MONGOID-5681
    vista.count(opciones)
  end
end

#borrarnulo También conocido como: delete_all

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

Ejemplos:

Borrar todos los documentos.

context.delete

Devuelve:

  • (nil)

    Nil.



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

def borrar
  vista.borrar_varios.deleted_count
end

#destruirnil 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)arreglo<Object>

Obtenga los valores distintos en la base de datos para el campo proporcionado.

Ejemplos:

Obtén los valores distintos.

context.distinct(:name)

Parámetros:

  • Campo (String | Símbolo)

    El nombre del campo.

Devuelve:

  • (arreglo<Object>)

    Los valores distintos del campo.



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.

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 ¿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.

Ejemplos:

Obtenga el número estimado de documentos coincidentes.

context.estimated_count

Parámetros:

  • opciones (Hash) (por defecto: {})

    Las opciones, como maxTimeMS para tener en cuenta en el recuento.

Devuelve:

  • (Número 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 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(opciones)
end

#¿exists?(id_or_conditions = :none) ⇒ true | false

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?

¿Existen documentos para la _id dada?

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

¿Existen documentos para las condiciones dadas?

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

Parámetros:

  • id_or_conditions (Hash | Objeto | falso) (por defecto: :none)

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

Devuelve:

  • (true | false)

    Si el recuento es más que cero. Siempre es falso si se pasa nil o false.



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

#quintoDocumento | nulo

Obtén el quinto documento en la base de datos para el selector de los criterios.

Ejemplos:

Obtén el quinto documento.

context.fifth

Devuelve:

  • (Document | nil)

    El quinto documento o nil 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

Obten el quinto documento en la base de datos para el selector de criterios o genera un error si no se encuentra ninguno.

Ejemplos:

Obtén el quinto documento.

context.fifth!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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

def ¡quinto!
  quinto || raise_document_not_found_error
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 raw_doc = vista.primero
    doc = Fábrica.desde_db(klass, raw_doc, criterios)
    eager_load([doc]).primero
  end
end

#find_one_and_deleteDocumento

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

Ejemplos:

Exécutez la commande.

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

#find_one_and_replace(replacement, opciones = {}) ⇒ documento

Ejecute el comando de búsqueda y modificación, utilizado para el $findAndModify de MongoDB.

Ejemplos:

Exécutez la commande.

context.find_one_and_update({ likes: 1 })

Parámetros:

  • sustitución (encriptada)

    El reemplazo.

  • opciones (Hash) (por defecto: {})

    Las opciones de comando.

Opciones Hash (options):

  • documento de retorno (:before | :after)

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

  • inserción (true | false)

    Crea el documento si no existe.

Devuelve:



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

def find_one_and_replace(sustitución, opciones = {})
  si doc = vista.find_one_and_replace(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 el $findAndModify de MongoDB.

Ejemplos:

Exécutez la commande.

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

Parámetros:

  • update (encriptada)

    Las actualizaciones.

  • opciones (Hash) (por defecto: {})

    Las opciones de comando.

Opciones Hash (options):

  • documento de retorno (:before | :after)

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

  • inserción (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:

Obtén 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 primero(limit = nulo)
  si limit.nil?
    retrieve_nth(0)
  else
    retrieve_nth_with_limit(0, limit)
  end
end

#first!Document

Nota:

"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.

Ejemplos:

Obtén el primer documento.

context.first!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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

def ¡primero!
  primero || raise_document_not_found_error
end

#cuartoDocumento | nil

Obtén el cuarto documento en la base de datos para el selector de los criterios.

Ejemplos:

Obtén el cuarto documento.

context.fourth

Devuelve:

  • (Document | nil)

    El cuarto documento o nil 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 los criterios o genere un error si no se encuentra ninguno.

Ejemplos:

Obtén el cuarto documento.

context.fourth!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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

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 último documento en la base de datos según el selector de los 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 nil si no se encuentra ninguno.



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

Nota:

"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.

Ejemplos:

Obtenga el último documento.

context.last!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



617
618
619
# Archivo 'lib/mongoid/contextual/mongo.rb', línea 617

def ¡último!
  último || raise_document_not_found_error
end

#longitudInteger 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.

Ejemplos:

Obtenga la longitud.

context.length

Devuelve:

  • (Número entero)

    El número de documentos.



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.

Ejemplos:

Limita los documentos.

context.limit(20)

Parámetros:

  • Valor (Número 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  sí mismo
end

#load_asyncObject

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.

Ejemplos:

Iniciar una operación map/reduce.

context.map_reduce(map, reduce)

Parámetros:

  • map (string)

    La función js de mapa.

  • disminuir (string)

    La función reduce js.

Devuelve:

  • (MapReduce)

    El contenedor perezoso de map/reduce.



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.

Ejemplos:

Elige un campo.

context.pick(:_id)

Parámetros:

  • *campo ([ String | Symbol ]...)

    Campo(s) para elegir.

Devuelve:

  • (objeto |<Object> arreglo)

    Los valores seleccionados.



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.

Ejemplos:

Seleccionar un campo.

context.pluck(:_id)

Parámetros:

  • *campo ([ String | Symbol ]...)

    Campo o campos a extraer, incluyendo campos anidados utilizando notación de puntos.

Devuelve:

  • (Array<Object> | Array<Array<Object>>)

    Los valores seleccionados. Si el argumento *fields contiene un solo valor, cada resultado en el arreglo será un solo valor. De lo contrario, cada resultado en el arreglo será un arreglo 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 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

#segundoDocumento | nil

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

Ejemplos:

Obtén 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

Obtén el segundo documento en la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.

Ejemplos:

Obtén el segundo documento.

context.second!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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

def ¡segundo!
  segundo || raise_document_not_found_error
end

#second_to_lastDocumento | nil

Obtenga el penúltimo documento en la base de datos para el selector de criterios.

Se encuentra.

Ejemplos:

Obten el penú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

#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.

Ejemplos:

Obten el penúltimo documento.

context.second_to_last!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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.

Ejemplos:

Saltar los documentos.

context.skip(20)

Parámetros:

  • Valor (Número 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  sí mismo
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 ¿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.

Ejemplos:

Toma 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
    # 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.

Ejemplos:

Toma un documento

context.take!

Devuelve:

Aumenta:

  • (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 ¡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 }

Parámetros:

  • Campo (String | Símbolo)

    El nombre del campo.

Devuelve:

  • (encriptada)

    El hash de 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 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

#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

Obtén el tercer documento de la base de datos para el selector del criterio o genera un error si no se encuentra ninguno.

Ejemplos:

Obtén el tercer documento.

context.third!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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

def ¡tercero!
  tercero || raise_document_not_found_error
end

#tercero_anteúltimoDocumento | nil

Obtén el tercer documento antes del último en la base de datos para el selector de los criterios.

Se encuentra.

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last

Devuelve:

  • (Document | nil)

    El tercer último documento 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

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.

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last!

Devuelve:

  • (documento)

    El antepenúltimo documento.

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    se activa cuando no hay documentos disponibles.



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.

Ejemplos:

Actualiza el primer documento coincidente.

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

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para el documento.

  • opta (Hash) (por defecto: {})

    Las opciones para actualizar la operación.

Opciones Hash (opts):

  • :array_filters (arreglo)

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

Devuelve:

  • (nil | false)

    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

Actualiza todos los documentos coincidentes de manera atómica.

Ejemplos:

Actualice todos los documentos coincidentes.

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

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos de cada documento.

  • opta (Hash) (por defecto: {})

    Las opciones para actualizar la operación.

Opciones Hash (opts):

  • :array_filters (arreglo)

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

Devuelve:

  • (nil | false)

    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