Módulo: Mongoid::Association::Embedded::Batchable
- Incluye:
- Posicional
- Incluido en:
- IncrustacionesMuchas::Proxy
- Definido en:
- lib/mongoid/asociación/incrustado/batchable.rb
Overview
Contiene el comportamiento para ejecutar operaciones en lote en documentos incrustados.
Colapso del resumen del método de instancia
-
#batch_clear(docs) ⇒ Matriz
Borre todos los documentos de la asociación de un solo golpe.
-
#batch_insert(docs) ⇒ Array<Hash>
Insertar nuevos documentos como un push por lotes ($push con $each).
-
#batch_remove(docs, método =:delete) ⇒ Objeto
Elimine por lotes los documentos proporcionados como $pullAll o $pull.
-
#batch_replace(docs) ⇒ Array<Hash>
Reemplace por lotes los documentos proporcionados como un $set.
Métodos incluidos de Posicional
Detalles del método de instancia
#batch_clear(docs) ⇒ Matriz
Borre todos los documentos de la asociación de un solo golpe.
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# Archivo 'lib/mongoid/association/embedded/batchable.rb', línea 35 def limpieza por lotes(docs) pre_procesar_eliminar_lote(docs, :borrar) a no ser que docs.¿vacío? Colección.buscar(selector).update_one( posicionalmente(selector, "$unset" => { ruta => true }), sesión: _sesión ) # Esto resuelve el caso en el que un usuario establece, borra y restablece un # documento incrustado. Anteriormente, dado que el documento incrustado era # ya marcado como no "new_record", no se conservará # la segunda vez. Este cambio corrige este problema y permite que persista. docs.cada { |doc| doc.nuevo_registro = true } eliminación de lotes después del proceso(docs, :borrar) end _sin ámbito.borrar end |
#batch_insert(docs) ⇒ Array<Hash>
Inserte nuevos documentos como un push por lotes ($push con $each). Esto garantiza que todas las devoluciones de llamada se ejecuten en el momento oportuno y que solo se realice una solicitud 1 a la base de datos.
23 24 25 |
# Archivo 'lib/mongoid/association/embedded/batchable.rb', línea 23 def batch_insert(docs) ejecutar_lote_push(docs) end |
#batch_remove(docs, método =:delete) ⇒ Objeto
Elimine por lotes los documentos proporcionados como $pullAll o $pull.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 |
# Archivo 'lib/mongoid/association/embedded/batchable.rb', línea 59 def eliminación por lotes(docs, Método = :borrar) # Si el _id es nulo, no podemos usar $pull y eliminar buscando # el id. Por lo tanto, debemos usar pullAll con los documentos. # atributos. mudanzas = pre_procesar_eliminar_lote(docs, Método) tira, tirar_todos = mudanzas.dividir { |o| !o["_identificación"].nil? } Si !_base.¿persistió? eliminación de lotes después del proceso(docs, Método) a no ser que docs.¿vacío? return reindex end Si !docs.¿vacío? Si !tira.¿vacío? Colección.buscar(selector).update_one( posicionalmente(selector, "$pull" => { ruta => { "_identificación" => { "$en" => tira.arrancar("_identificación") } } }), sesión: _sesión ) end Si !tirar_todos.¿vacío? Colección.buscar(selector).update_one( posicionalmente(selector, "$pullAll" => { ruta => tirar_todos }), sesión: _sesión ) end eliminación de lotes después del proceso(docs, Método) else Colección.buscar(selector).update_one( posicionalmente(selector, "$set" => { ruta => [] }), sesión: _sesión ) end reindex end |
#batch_replace(docs) ⇒ Array<Hash>
Reemplace por lotes los documentos proporcionados como un $set.
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 |
# Archivo 'lib/mongoid/association/embedded/batchable.rb', línea 102 def reemplazo por lotes(docs) Si docs.blank? Si ¿_asignando? && !¿vacío? _base.conjuntos atómicos retrasados.borrar(ruta) borrar_caché_de_ruta_atómica _base.añadir_desactivación_atómica(primera) duplicado de destino = _objetivo.dup pre_procesar_eliminar_lote(duplicado de destino, :borrar) eliminación de lotes después del proceso(duplicado de destino, :borrar) else eliminación por lotes(_objetivo.dup) end elsif _objetivo != docs _base.conjuntos atómicos retrasados.borrar(ruta) a no ser que ¿_asignando? docs = normalizar_docs(docs).compact _objetivo.borrar y _sin ámbito.borrar _base.puestas de sol atómicas retrasadas.borrar(ruta) borrar_caché_de_ruta_atómica inserts = execute_batch_set(docs) agregar_conjuntos_atómicos(inserts) end end |