Consulta de objetos incrustados en Mongoid / rails 3 ("Menor que", operadores mínimos y clasificación)
Estoy usando rieles 3 con mongoid. Tengo una colección de acciones con una colección integrada de precios:
class Stock
include Mongoid::Document
field :name, :type => String
field :code, :type => Integer
embeds_many :prices
class Price
include Mongoid::Document
field :date, :type => DateTime
field :value, :type => Float
embedded_in :stock, :inverse_of => :prices
Me gustaría obtener las acciones cuyo precio mínimo desde una fecha determinada es inferior a un precio dado p, y luego poder clasificar los precios de cada acción.
Pero parece que Mongodb no permite hacerlo. Porque esto no funcionará:
@stocks = Stock.Where(:prices.value.lt => p)
Además, parece que mongoDB no puede ordenar objetos incrustados.
Entonces, ¿hay alguna alternativa para realizar esta tarea?
Tal vez debería poner todo en una colección para poder ejecutar fácilmente la siguiente consulta:
@stocks = Stock.Where(:prices.lt => p)
Pero realmente quiero obtener resultados agrupados por nombres de acciones después de mi consulta (acciones distintas con una variedad de precios ordenados, por ejemplo). He oído hablar de map / reduce con la función de grupo, pero no estoy seguro de cómo usarlo correctamente con Mongoid.
http: //www.mongodb.org/display/DOCS/Aggregatio
El equivalente en SQL sería algo como esto:
SELECT name, code, min(price) from Stock WHERE price<p GROUP BY name, code
Gracias por tu ayuda