Módulo: Mongoid::Positional
- Incluido en:
- Asociación::Incrustada::Agrupable, Contextual::Memoria, Persistente
- Definido en:
- lib/mongoid/posicional.rb
Overview
Este módulo es responsable de tomar selectores de actualización y sustituir los índices por el operador posicional $ cuando sea apropiado.
Resumen del método de instancia colapsar
-
#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 darnos cuenta por el selector que estamos enviando si es realmente posible utilizar el operador posicional en absoluto. Por ejemplo, si el selector es: { “_id” => 1 }, entonces no podríamos usar el operador posicional para actualizar documentos incrustados, ya que nunca habrá una coincidencia; determinamos si podemos hacerlo según la cantidad de niveles que alcanza el selector y si los valores de id no 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, procesado = {}) 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 } process_operations(claves, Operaciones, procesado) end |