Módulo: Mongoid::Positional
- Incluido en:
- Asociación::Incorporado::Por lotes, Contextual::Memoria, Persistable
- Definido en:
- lib/mongoid/posicional.rb
Overview
Este módulo es responsable de tomar los selectores de actualización y cambiar los índices para el operador posicional $ cuando sea apropiado.
Colapso del resumen del método de instancia
-
#posicionalmente(selector, operaciones, procesado = {}) ⇒ Hash
Toma el selector proporcionado y las operaciones atómicas y reemplaza los índices de los documentos integrados con el operador posicional cuando es necesario.
Detalles del método de instancia
#posicionalmente(selector, operaciones, procesado = { }) ⇒ Hash
El único momento en que podemos saber con precisión cuándo usar el operador posicional es en el momento exacto en que vamos a persistir algo. Por lo tanto, podemos determinar, mediante el selector que enviamos, si es posible usar el operador posicional. Por ejemplo, si el selector es: { “_id” => 1 }, no podríamos usar el operador posicional para actualizar documentos incrustados, ya que nunca habría una coincidencia. Para determinar si es posible, nos basamos en el número de niveles de profundidad del selector y si los valores de id son nulos.
Toma el selector proporcionado y las operaciones atómicas y reemplaza los índices de los documentos integrados con el operador posicional cuando es necesario.
34 35 36 37 38 39 40 41 |
# Archivo 'lib/mongoid/positional.rb', línea 34 def posicionalmente(selector, Operaciones, procesados = {}) Si selector.tamaño == 1 || selector.values.any? { |val| val.nil? } return Operaciones end claves = selector.claves.map{ |m| m.sub('._id','') } - ['_id'] claves = claves.Ordenar por { |s| s.longitud*-1 } operaciones_de_proceso(claves, Operaciones, procesados) end |