Clase: Mongoid::Contextual::Memoria

Hereda:
Objeto
  • Objeto
Mostrar todo
Incluye:
Enumerable, Asociación::EagerLoadable, Agregable::Memoria, Consultable, Posicional
Definido en:
lib/mongoid/contextual/memoria.rb

Overview

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

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 Posicional

#posicionalmente

Métodos incluidos de Queryable

#blank?

Métodos incluidos en 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:

Crea 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.Seleccione hacer |doc|
    @root ||= doc._root
    @recopilación ||= raíz.Colección
    doc._¿partidos?(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

lector de atributos :documentos, :camino, :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
  @camino
end

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



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

lector de atributos :documentos, :camino, :raíz, :selector

#raízObjeto (solo lectura)

Devuelve el valor del atributo raíz.



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

def raíz
  @root
end

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



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

lector de atributos :documentos, :camino, :raíz, :selector

#selectorObjeto (solo lectura)

Devuelve el valor del selector de atributos.



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

def selector
  @selector
end

#selector El selector del documento raíz.(Therootdocumentselector.) ⇒ Objeto (solo lectura)



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

lector de atributos :documentos, :camino, :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 (Matriz)

    La otra matriz.

Devuelve:

  • (verdadero | falso)

    Si los objetos son iguales.



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

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



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
  eliminado = count
  remoto = map hacer |doc|
    preparar_eliminar(doc)
    doc.Enviar(:como_atributos)
  end
  a no ser que remoto.¿vacío?
    Colección.buscar(selector).update_one(
      posicionalmente(selector, "$pullAll" => { ruta => remoto }),
      sesión: _sesión
    )
  end
  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.



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

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



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

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

#cadaEnumerador

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.



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

def cada
  Si ¿bloque_dado?
    documentos_para_iteración.cada hacer |doc|
      rendimiento(doc)
    end
    yo
  else
    to_enum
  end
end

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

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



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

def ¿Existe?(id_o_condiciones = :ninguno)
  caso id_o_condiciones
  Cuando :ninguno entonces any?
  Cuando nulo, false entonces false
  Cuando Picadillo entonces Memoria.Nuevo(criterios.donde(id_o_condiciones)).¿Existe?
  else Memoria.Nuevo(criterios.donde(_id: id_o_condiciones)).¿Existe?
  end
end

#quintoDocumento

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

Ejemplos:

Obtén el quinto documento.

context.fifth

Devuelve:



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

def quinto
  carga ansiosa([Documentos.quinto]).primera
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 que llevar.



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

def ¡quinto!
  quinto || generar error de documento no encontrado
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:

Obtenga 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 primera(limit = nulo)
  Si limit
    carga ansiosa(Documentos.primera(limit))
  else
    carga ansiosa([Documentos.primera]).primera
  end
end

#first!Document

Obtenga el primer documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.

Ejemplos:

Obtenga el primer documento.

context.first!

Devuelve:

Aumentos:

  • (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!
  primera || generar error de documento no encontrado
end

#cuartoDocumento

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

Ejemplos:

Obtén el cuarto documento.

context.fourth

Devuelve:



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

def cuarto
  carga ansiosa([Documentos.cuarto]).primera
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 que llevar.



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

def ¡cuatro!
  cuarto || generar error de documento no encontrado
end

#inc(incs) ⇒ Enumerator

Incrementar un valor en todos los documentos.

Ejemplos:

Realizar el incremento.

context.inc(likes: 10)

Parámetros:

  • incs (Hash)

    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

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:



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

def última(limit = nulo)
  Si limit
    carga ansiosa(Documentos.última(limit))
  else
    carga ansiosa([Documentos.última]).primera
  end
end

#last!Document

Obtenga el último documento en la base de datos para el selector de criterios o genere un error si no se encuentra ninguno.

Ejemplos:

Obtenga el último documento.

context.last!

Devuelve:

Aumentos:

  • (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!
  última || generar error de documento no encontrado
end

#longitud Entero También conocido como: tamaño

Obtenga la longitud de los documentos coincidentes en el contexto.

Ejemplos:

Obtenga la longitud de los documentos coincidentes.

context.length

Devuelve:

  • (Entero)

    La longitud correspondiente.



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

def longitud
  Documentos.longitud
end

#límite(valor) ⇒ Memoria

Limita la cantidad de documentos que se devuelven.

Ejemplos:

Limitar los documentos.

context.limit(20)

Parámetros:

  • valor (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)
  yo.limitante = valor
  yo
end

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

Selecciona los valores de campo en la memoria.

Ejemplos:

Obtener los valores en la memoria.

context.pick(:name)

Parámetros:

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

    Campo(s) a escoger.

Devuelve:

  • (Objeto|<Object> Matriz)

    Los valores seleccionados.



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

def picking(*campos)
  Si doc = Documentos.primera
    arrancar_del_doc(doc, *campos)
  end
end

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

Extraiga los valores del campo en la memoria.

Ejemplos:

Obtener los valores en la memoria.

context.pluck(:name)

Parámetros:

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

    Campo(s) para extraer.

Devuelve:

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

    Los valores extraídos.



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

def arrancar(*campos)
  Documentos.map hacer |doc|
    arrancar_del_doc(doc, *campos)
  end
end

#segundoDocumento

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

Ejemplos:

Obtenga el segundo documento.

context.second

Devuelve:



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

def segundo
  carga ansiosa([Documentos.segundo]).primera
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 que llevar.



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

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

# penúltimo⇒ Documento

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

Ejemplos:

Obtenga el segundo último documento.

context.second_to_last

Devuelve:

  • (Documento) -

    El segundo último documento.



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

def penúltimo
  carga ansiosa([Documentos.penúltimo]).primera
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 que llevar.



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

def second_to_last!
  penúltimo || generar error de documento no encontrado
end

#saltar(valor) ⇒ Memoria

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:



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

def Omitir(valor)
  yo.salto a la comba = valor
  yo
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 (Hash)

    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)
  ordenación in situ(values) y  yo
end

#take(limit = nil) ⇒ Document

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

Ejemplos:

Tome un documento.

context.take

Parámetros:

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

    El número de documentos a llevar o ninguno.

Devuelve:



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

def tomar(limit = nulo)
  Si limit
    carga ansiosa(Documentos.tomar(limit))
  else
    carga ansiosa([Documentos.primera]).primera
  end
end

#take!Document

Tome la cantidad dada de documentos de la base de datos o genere un error si no se encuentra ninguno.

Ejemplos:

Tome un documento.

context.take

Devuelve:

Aumentos:

  • (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 ¡llevar!
  tomar || generar error de documento no encontrado
end

#tally(campo) ⇒ Hash

Cuente los valores del campo en la memoria.

Ejemplos:

Obtén los recuentos de valores en la memoria.

context.tally(:name)

Parámetros:

  • Campo (Cadena | Símbolo)

    Campo a contabilizar.

Devuelve:

  • (Hash)

    El hash de los recuentos.



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

def cuenta(Campo)
  return Documentos.cada_con_objeto({}) 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
  carga ansiosa([Documentos.tercero]).primera
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 que llevar.



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

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

#antepenúltimoDocumento

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

Ejemplos:

Obtenga el tercer último documento.

context.third_to_last

Devuelve:



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

def antepenúltimo
  carga ansiosa([Documentos.antepenúltimo]).primera
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 que llevar.



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

def antepenúltimo!
  antepenúltimo || generar error de documento no encontrado
end

#update(attributes = nil) ⇒ nil | false

Actualice atómicamente el primer documento coincidente.

Ejemplos:

Actualice el documento correspondiente.

context.update(name: "Smiths")

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para el documento.

Devuelve:

  • (nulo | falso)

    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, [ primera ])
end

#update_all(attributes = nil) ⇒ nil | false

Actualice todos los documentos coincidentes de forma atómica.

Ejemplos:

Actualice todos los documentos coincidentes.

context.update_all(name: "Smiths")

Parámetros:

  • atributos (Hash) (predeterminado: nulo)

    Los nuevos atributos para cada documento.

Devuelve:

  • (nulo | falso)

    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