Clase: Mongoid::Contextual::Memoria

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Enumerable, Asociación::Carga anticipada, Agregado::Memoria, Queryable, Posicional
Definido en:
lib/mongoid/contextual/memory.rb

Overview

Objeto de contexto utilizado para realizar operaciones de query y persistencia masivas en documentos que se han cargado en la memoria de la aplicación. La interfaz de método de esta clase es coherente con Mongoid::Contextual::Mongo.

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 desde Positional

#posicionalmente

Métodos incluidos de Queryable

#blank?

Métodos incluidos desde Association::EagerLoadable

#carga_ansiosa, #cargable_ansiosa?, #precarga

Métodos incluidos en Aggregable::Memory

#agregados, #promedio, #máx, #mín, #suma

Detalles del constructor

#inicializar(criterios) ⇒ Memoria

Crear el nuevo contexto en memoria.

Ejemplos:

Cree el nuevo contexto.

Memory.new(criteria)

Parámetros:



173
174
175
176
177
178
179
180
181
182
# Archivo 'lib/mongoid/contextual/memory.rb', línea 173

def inicializar(criterios)
  @criteria, @klass = criterios, criterios.klass
  @documents = criterios.Documentos.Seleccionar hacer |doc|
    @root ||= doc._root
    @colección ||= root.Colección
    doc.¿_coincidencias?(criterios.selector)
  end
  aplicar_clasificación
  aplicar_opciones
end

Detalles de los atributos de instancia

#documentosObjeto (solo lectura)

Devuelve el valor de los documentos atributo.



25
26
27
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

def Documentos
  @documents
end

#la coincidencia Los documentos en memoria que cumplen con el selector.(The) ⇒ objeto (solo lectura)



25
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

attr_reader :documentos, puerta, :raíz, :selector

#rutaObjeto (solo lectura)

Devuelve el valor de la ruta del atributo.



25
26
27
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

def ruta
  @path
end

#ruta La ruta atómica.(Theatomicpath.) ⇒ Objeto (solo lectura)



25
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

attr_reader :documentos, puerta, :raíz, :selector

#rootObject (solo lectura)

Devuelve el valor del atributo root.



25
26
27
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

def root
  @root
end

#root El documento raíz.(Therootdocument.) ⇒ Objeto (solo lectura)



25
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

attr_reader :documentos, puerta, :raíz, :selector

#selectorObject (solo lectura)

Devuelve el valor del selector del atributo.



25
26
27
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

def selector
  @selector
end

#selector El selector de documento raíz.(El selector de documento raíz.) ⇒ Object (solo lectura)



25
# Archivo 'lib/mongoid/contextual/memory.rb', línea 25

attr_reader :documentos, puerta, :raíz, :selector

Detalles del método de instancia

#==(otro) ⇒ verdadero | falso

Comprueba si el contexto es igual al otro objeto.

Ejemplos:

Comprobar la igualdad.

context == []

Parámetros:

  • Otros (arreglo)

    La otra matriz.

Devuelve:

  • (true | false)

    Si los objetos son iguales.



35
36
37
38
# Archivo 'lib/mongoid/contextual/memory.rb', línea 35

def ==(Otros)
  return false a menos que Otros.respond_to?(entradas:)
  entradas == Otros.entradas
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.



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Archivo 'lib/mongoid/contextual/memory.rb', línea 46

def borrar
  deleted = count
  Removido = map hacer |doc|
    Preparando eliminación(doc)
    doc.enviar(.como_atributos)
  end
  a menos que Removido.¿vacío?
    Colección.buscar(selector).update_one(
      posicionalmente(selector, "$pullAll" => { ruta => Removido }),
      sesión: _sesión
    )
  end
  deleted
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.



68
69
70
71
72
73
74
75
# Archivo 'lib/mongoid/contextual/memory.rb', línea 68

def destruir
  deleted = count
  cada hacer |doc|
    Documentos.delete_one(doc)
    doc.destruir
  end
  deleted
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.



86
87
88
# Archivo 'lib/mongoid/contextual/memory.rb', línea 86

def distinct(Campo)
  pluck(Campo).único
end

#cada unoEnumerator

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.



99
100
101
102
103
104
105
106
107
108
# Archivo 'lib/mongoid/contextual/memory.rb', línea 99

def cada
  si ¿block_given?
    documentos_para_iteración.cada hacer |doc|
      rendimiento(doc)
    end
    sí mismo
  else
    to_enum
  end
end

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

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



126
127
128
129
130
131
132
133
# Archivo 'lib/mongoid/contextual/memory.rb', línea 126

def ¿existe?(id_or_conditions = :ninguno)
  caso id_or_conditions
  Cuando :ninguno entonces any?
  Cuando nulo, false entonces false
  Cuando Picadillo entonces Memoria.Nuevo(criterios.dónde(id_or_conditions)).¿existe?
  else Memoria.Nuevo(criterios.dónde(_id: id_or_conditions)).¿existe?
  end
end

#quintoDocumento

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:



454
455
456
# Archivo 'lib/mongoid/contextual/memory.rb', línea 454

def quinto
  eager_load([Documentos.quinto]).primero
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 plantea cuando no hay documentos que llevar.



468
469
470
# Archivo 'lib/mongoid/contextual/memory.rb', línea 468

def ¡quinto!
  quinto || raise_document_not_found_error
end

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

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:



143
144
145
146
147
148
149
# Archivo 'lib/mongoid/contextual/memory.rb', línea 143

def primero(limit = nulo)
  si limit
    eager_load(Documentos.primero(limit))
  else
    eager_load([Documentos.primero]).primero
  end
end

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

Ejemplos:

Obtén el primer documento.

context.first!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos que llevar.



163
164
165
# Archivo 'lib/mongoid/contextual/memory.rb', línea 163

def ¡primero!
  primero || raise_document_not_found_error
end

#cuartoDocumento

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:



430
431
432
# Archivo 'lib/mongoid/contextual/memory.rb', línea 430

def cuarto
  eager_load([Documentos.cuarto]).primero
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 plantea cuando no hay documentos que llevar.



444
445
446
# Archivo 'lib/mongoid/contextual/memory.rb', línea 444

def ¡cuarto!
  cuarto || raise_document_not_found_error
end

#inc(incs) ⇒ Enumerator

Incrementar un valor en todos los documentos.

Ejemplos:

Realiza el incremento.

context.inc(likes: 10)

Parámetros:

  • incs (encriptada)

    Las operaciones.

Devuelve:

  • (Enumerator)

    El enumerador.



192
193
194
195
196
# Archivo 'lib/mongoid/contextual/memory.rb', línea 192

def Inc(incs)
  cada hacer |Documento|
    Documento.Inc(incs)
  end
end

#last(limit = nil) ⇒ Document

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:



206
207
208
209
210
211
212
# Archivo 'lib/mongoid/contextual/memory.rb', línea 206

def último(limit = nulo)
  si limit
    eager_load(Documentos.último(limit))
  else
    eager_load([Documentos.último]).primero
  end
end

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

Ejemplos:

Obtenga el último documento.

context.last!

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos que llevar.



224
225
226
# Archivo 'lib/mongoid/contextual/memory.rb', línea 224

def ¡último!
  último || raise_document_not_found_error
end

#longitudInteger También conocido como: tamaño

Obtiene la longitud de los documentos coincidentes en el contexto.

Ejemplos:

Obtén la longitud de los documentos coincidentes.

context.length

Devuelve:

  • (Número entero)

    La longitud coincidente.



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

def longitud
  Documentos.longitud
end

#limit(value) ⇒ Memoria

Limita el número de documentos que se devuelven.

Ejemplos:

Limita los documentos.

context.limit(20)

Parámetros:

  • Valor (Número entero)

    El número de documentos a devolver.

Devuelve:



247
248
249
250
# Archivo 'lib/mongoid/contextual/memory.rb', línea 247

def limit(Valor)
  sí mismo.limitando = Valor
  sí mismo
end

#seleccionar(*campos) ⇒ Objeto | Matriz<Object>

Selecciona los valores de campo en la memoria.

Ejemplos:

Obtén los valores en memoria.

context.pick(:name)

Parámetros:

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

    Campo(s) para elegir.

Devuelve:

  • (objeto |<Object> arreglo)

    Los valores seleccionados.



274
275
276
277
278
# Archivo 'lib/mongoid/contextual/memory.rb', línea 274

def elegir(*campos)
  si doc = Documentos.primero
    pluck_from_doc(doc, *campos)
  end
end

#pluck(*campos) ⇒ Array<Object> | Array<Array<Object>>

Extrae los valores de los campos en la memoria.

Ejemplos:

Obtén los valores en memoria.

context.pluck(:name)

Parámetros:

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

    Campo(s) para extraer.

Devuelve:

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

    Los valores seleccionados.



260
261
262
263
264
# Archivo 'lib/mongoid/contextual/memory.rb', línea 260

def pluck(*campos)
  Documentos.map hacer |doc|
    pluck_from_doc(doc, *campos)
  end
end

#segundoDocumento

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

Ejemplos:

Obtén el segundo documento.

context.second

Devuelve:



382
383
384
# Archivo 'lib/mongoid/contextual/memory.rb', línea 382

def segundo
  eager_load([Documentos.segundo]).primero
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 plantea cuando no hay documentos que llevar.



396
397
398
# Archivo 'lib/mongoid/contextual/memory.rb', línea 396

def ¡segundo!
  segundo || raise_document_not_found_error
end

# penúltimo⇒ Documento

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

Ejemplos:

Obten el penúltimo documento.

context.second_to_last

Devuelve:



478
479
480
# Archivo 'lib/mongoid/contextual/memory.rb', línea 478

def penúltimo
  eager_load([Documentos.penúltimo]).primero
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 plantea cuando no hay documentos que llevar.



492
493
494
# Archivo 'lib/mongoid/contextual/memory.rb', línea 492

def second_to_last!
  penúltimo || raise_document_not_found_error
end

#skip(valor) ⇒ Memory

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:



334
335
336
337
# Archivo 'lib/mongoid/contextual/memory.rb', línea 334

def Omitir(Valor)
  sí mismo.saltando = Valor
  sí mismo
end

#sort(values) ⇒ Memory

Ordena los documentos según la especificación proporcionada.

Ejemplos:

Ordenar los documentos.

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

Parámetros:

  • values (encriptada)

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

Devuelve:



348
349
350
# Archivo 'lib/mongoid/contextual/memory.rb', línea 348

def sort(values)
  in_place_sort(values) y  sí mismo
end

#take(limit = nil) ⇒ Document

Tome el número de documentos dado de la base de datos.

Ejemplos:

Tome un documento.

context.take

Parámetros:

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

    El número de documentos a tomar o nil.

Devuelve:



304
305
306
307
308
309
310
# Archivo 'lib/mongoid/contextual/memory.rb', línea 304

def tomar(limit = nulo)
  si limit
    eager_load(Documentos.tomar(limit))
  else
    eager_load([Documentos.primero]).primero
  end
end

#take!Document

Tome la cantidad indicada de documentos de la base de datos o genere un error si no se encontraron documentos.

Ejemplos:

Tome un documento.

context.take

Devuelve:

Aumenta:

  • (Mongoid::Errors::Documentono encontrado)

    Se plantea cuando no hay documentos que llevar.



322
323
324
# Archivo 'lib/mongoid/contextual/memory.rb', línea 322

def ¡toma!
  tomar || raise_document_not_found_error
end

#tally(campo) ⇒ Hash

Contabilizar los valores de los campos en la memoria.

Ejemplos:

Obtén los recuentos de valores en la memoria.

context.tally(:name)

Parámetros:

  • Campo (String | Símbolo)

    Campo para calcular.

Devuelve:

  • (encriptada)

    El hash de recuentos.



288
289
290
291
292
293
294
# Archivo 'lib/mongoid/contextual/memory.rb', línea 288

def cómputo(Campo)
  return Documentos.each_with_object({}) hacer |d, acc|
    v = retrieve_value_at_path(d, Campo)
    acc[v] ||= 0
    acc[v] += 1
  end
end

#terceroDocumento

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

Ejemplos:

Obtén el tercer documento.

context.third

Devuelve:



406
407
408
# Archivo 'lib/mongoid/contextual/memory.rb', línea 406

def tercero
  eager_load([Documentos.tercero]).primero
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 plantea cuando no hay documentos que llevar.



420
421
422
# Archivo 'lib/mongoid/contextual/memory.rb', línea 420

def ¡tercero!
  tercero || raise_document_not_found_error
end

#antepenúltimoDocumento

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

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last

Devuelve:

  • (documento)

    El antepenúltimo documento.



502
503
504
# Archivo 'lib/mongoid/contextual/memory.rb', línea 502

def antepenúltimo
  eager_load([Documentos.antepenúltimo]).primero
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 plantea cuando no hay documentos que llevar.



516
517
518
# Archivo 'lib/mongoid/contextual/memory.rb', línea 516

def antepenúltimo!
  antepenúltimo || raise_document_not_found_error
end

#update(attributes = nil) ⇒ nil | false

Actualiza el primer documento coincidente de forma atómica.

Ejemplos:

Actualizar el documento coincidente.

context.update(name: "Smiths")

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para el documento.

Devuelve:

  • (nil | false)

    Falso si no se proporcionaron atributos.



360
361
362
# Archivo 'lib/mongoid/contextual/memory.rb', línea 360

def update(atributos = nulo)
  update_documents(atributos, [ primero ])
end

#update_all(attributes = nil) ⇒ nil | false

Actualiza todos los documentos coincidentes de manera atómica.

Ejemplos:

Actualice todos los documentos coincidentes.

context.update_all(name: "Smiths")

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos de cada documento.

Devuelve:

  • (nil | false)

    Falso si no se proporcionaron atributos.



372
373
374
# Archivo 'lib/mongoid/contextual/memory.rb', línea 372

def update_all(atributos = nulo)
  update_documents(atributos, entradas)
end