Clase: Mongoid::Contextual::Memory

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 para query., #criterios, #criterios Los criterios para el contexto., #klass, #klass El klass 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

#crear_pipeline, #carga_rápida, #carga_rápida_con_búsqueda, #cargable_rápidamente?, #precarga, #precarga_para_búsqueda, #intercambiar_campos_locales_y_extranjeros?

Métodos incluidos de Aggregable::Memory

#agregados, #prom, #máx, #mín, #sum

Detalles del Constructor

#initialize(criterios) ⇒ Memoria

Cree el nuevo contexto en memoria.

Ejemplos:

Cree el nuevo contexto.

Memory.new(criteria)

Parámetros:



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

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

Detalles de atributo de instancias

#documentosObjeto (solo lectura)

Devuelve el valor de los documentos atributo.



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

def Documentos
  @documents
end

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



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

attr_reader documento, puerta, :raíz, Selector:

#rutaObjeto (solo lectura)

Devuelve el valor de la ruta del atributo.



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

def ruta
  @path
end

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



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

attr_reader documento, puerta, :raíz, Selector:

#rootObject (solo lectura)

Devuelve el valor del atributo root.



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

def root
  @root
end

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



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

attr_reader documento, puerta, :raíz, Selector:

#selectorObject (solo lectura)

Devuelve el valor del selector del atributo.



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

def selector
  @selector
end

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



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

attr_reader documento, puerta, :raíz, Selector:

Detalles del método de instancia

#==(another) ⇒ verdadero | falso

Verifica si el contexto es igual al otro objeto.

Ejemplos:

Comprobar la igualdad.

context == []

Parámetros:

  • Otros (arreglo)

    El otro arreglo.

Devuelve:

  • (true | false)

    Si los objetos son iguales.



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

def ==(Otros)
  return false a menos que Otros.respond_to?(entradas:)

  entradas == Otros.entradas
end

#borrarnulo También conocido como: delete_all

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

Ejemplos:

Borrar todos los documentos.

context.delete

Devuelve:

  • (nil)

    Nil.



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

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.



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

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.



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

def distinct(Campo)
  pluck(Campo).uniq
end

#each(&block) ⇒ Enumerator

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.



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

def cada(&bloque)
  si ¿block_given?
    documentos_para_iteración.cada(&bloque)
    sí mismo
  else
    to_enum
  end
end

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

¿Existen documentos para el contexto?

Ejemplos:

¿Existen documentos 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, nil o falso.

Devuelve:

  • (true | false)

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



123
124
125
126
127
128
129
130
# Archivo 'lib/mongoid/contextual/memory.rb', línea 123

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

#quintaDocumento

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

Ejemplos:

Obtén el quinto documento.

context.fifth

Devuelve:



456
457
458
# Archivo 'lib/mongoid/contextual/memory.rb', línea 456

def quinto
  eager_load([ Documentos.quinto ]).primero
end

#¡quinto!Documento

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

Ejemplos:

Obtén el quinto documento.

context.fifth!

Devuelve:

Aumenta:



470
471
472
# Archivo 'lib/mongoid/contextual/memory.rb', línea 470

def ¡quinto!
  quinto || raise_document_not_found_error
end

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

Obtenga el primer documento en la base de datos para el selector del criterio.

Ejemplos:

Obtén el primer documento.

context.first

Parámetros:

  • limit (Integer) (valor por defecto: nil)

    El número de documentos a devolver.

Devuelve:



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

def primero(limit = nulo)
  use_first = limit.nil?
  limit ||= 1
  si criterios.use_lookup?
    @criteria = criterios.limit(limit)
    Resultado = eager_load_with_lookup
  else
    Resultado = eager_load(Documentos.primero(limit))
  end

  use_first ? Resultado.primero : Resultado
end

#first!Document

Obtenga el primer document en la base de datos para el selector del criterio o muestre un error si no se encuentra ninguno.

Ejemplos:

Obtén el primer documento.

context.first!

Devuelve:

Aumenta:



165
166
167
# Archivo 'lib/mongoid/contextual/memory.rb', línea 165

def ¡primero!
  primero || raise_document_not_found_error
end

#cuartoDocumento

Obtén el cuarto document en la base de datos para el selector del criterio.

Ejemplos:

Obtén el cuarto documento.

context.fourth

Devuelve:



432
433
434
# Archivo 'lib/mongoid/contextual/memory.rb', línea 432

def cuarto
  eager_load([ Documentos.cuarto ]).primero
end

#¡cuarto!Documento

Obtén el cuarto document en la base de datos para el selector de criterios o devuelve un error si no se encuentra ninguno.

Ejemplos:

Obtén el cuarto documento.

context.fourth!

Devuelve:

Aumenta:



446
447
448
# Archivo 'lib/mongoid/contextual/memory.rb', línea 446

def ¡cuarto!
  cuarto || raise_document_not_found_error
end

#inc(incs) ⇒ Enumerator

Incrementa un valor en todos los documentos.

Ejemplos:

Realiza el incremento.

context.inc(likes: 10)

Parámetros:

  • incs (encriptada)

    Las operaciones.

Devuelve:

  • (Enumerator)

    El enumerador.



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

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

#last(limit = nil) ⇒ Document

Obtén el último document en la base de datos para el selector de criterios.

Ejemplos:

Obtener el último documento.

context.last

Parámetros:

  • limit (Integer) (valor por defecto: nil)

    El número de documentos a devolver.

Devuelve:



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

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

#last!Document

Obtén el último document en la base de datos para el selector de los criterios o genera un error si no se encuentra ninguno.

Ejemplos:

Obtener el último documento.

context.last!

Devuelve:

Aumenta:



226
227
228
# Archivo 'lib/mongoid/contextual/memory.rb', línea 226

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.



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

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:



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

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

#pick(*campos) ⇒ Object | Array<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.



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

def elegir(*Campos)
  return a menos que doc = Documentos.primero

  pluck_from_doc(doc, *Campos)
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.



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

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

#segundoDocumento

Consigue el segundo document en la base de datos para el selector de criterios.

Ejemplos:

Obtén el segundo documento.

context.second

Devuelve:



384
385
386
# Archivo 'lib/mongoid/contextual/memory.rb', línea 384

def segundo
  eager_load([ Documentos.segundo ]).primero
end

#segundo!Documento

Obtenga el segundo document de la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.

Ejemplos:

Obtén el segundo documento.

context.second!

Devuelve:

Aumenta:



398
399
400
# Archivo 'lib/mongoid/contextual/memory.rb', línea 398

def ¡segundo!
  segundo || raise_document_not_found_error
end

#segundo_para_últimoDocumento

Obtener el penúltimo document de la base de datos para el selector de criterios.

Ejemplos:

Obten el penúltimo documento.

context.second_to_last

Devuelve:



480
481
482
# Archivo 'lib/mongoid/contextual/memory.rb', línea 480

def penúltimo
  eager_load([ Documentos.penúltimo ]).primero
end

#segundo_a_ultimo!Documento

Obtén el penúltimo document de la base de datos según el selector del criterio o genera un error si no se encuentra ninguno.

Ejemplos:

Obten el penúltimo documento.

context.second_to_last!

Devuelve:

Aumenta:



494
495
496
# Archivo 'lib/mongoid/contextual/memory.rb', línea 494

def second_to_last!
  penúltimo || raise_document_not_found_error
end

#skip(valor) ⇒ Memory

Omite el número proporcionado de documentos.

Ejemplos:

Saltar los documentos.

context.skip(20)

Parámetros:

  • Valor (Número entero)

    El número de documentos que se deben omitir.

Devuelve:



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

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

#sort(values) ⇒ Memory

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

Ejemplos:

Ordena 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:



350
351
352
# Archivo 'lib/mongoid/contextual/memory.rb', línea 350

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) (valor por defecto: nil)

    El número de documentos a tomar o nil.

Devuelve:



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

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:



324
325
326
# Archivo 'lib/mongoid/contextual/memory.rb', línea 324

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.



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

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

#terceroDocumento

Obtén el tercer document en la base de datos para el selector del criterio.

Ejemplos:

Obtén el tercer documento.

context.third

Devuelve:



408
409
410
# Archivo 'lib/mongoid/contextual/memory.rb', línea 408

def tercero
  eager_load([ Documentos.tercero ]).primero
end

#¡tercero!Documento

Obtener el tercer document en la base de datos para el selector del criterio o generar un error si no se encuentra ninguno.

Ejemplos:

Obtén el tercer documento.

context.third!

Devuelve:

Aumenta:



422
423
424
# Archivo 'lib/mongoid/contextual/memory.rb', línea 422

def ¡tercero!
  tercero || raise_document_not_found_error
end

#antepenúltimoDocumento

Obtén el tercer document antes del último en la base de datos según el selector del criterio.

Ejemplos:

Obtenga el tercer documento desde el final.

context.third_to_last

Devuelve:

  • (documento)

    El tercer documento antes del último.



504
505
506
# Archivo 'lib/mongoid/contextual/memory.rb', línea 504

def antepenúltimo
  eager_load([ Documentos.antepenúltimo ]).primero
end

#¡antepenúltimo!documento

Get el tercer document desde el final en la base de datos que cumpla con el selector de los criterios o genere un error si no se encuentra ninguno.

Ejemplos:

Obtenga el tercer documento desde el final.

context.third_to_last!

Devuelve:

  • (documento)

    El tercer documento antes del último.

Aumenta:



518
519
520
# Archivo 'lib/mongoid/contextual/memory.rb', línea 518

def tercero por la cola!
  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 (encriptada) (valor por defecto: nil)

    Los nuevos atributos para el documento.

Devuelve:

  • (nil | false)

    Falso si no se proporcionaron atributos.



362
363
364
# Archivo 'lib/mongoid/contextual/memory.rb', línea 362

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:

Actualiza todos los documentos coincidentes.

context.update_all(name: "Smiths")

Parámetros:

  • atributos (encriptada) (valor por defecto: nil)

    Los nuevos atributos de cada documento.

Devuelve:

  • (nil | false)

    Falso si no se proporcionaron atributos.



374
375
376
# Archivo 'lib/mongoid/contextual/memory.rb', línea 374

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