так назовите это так:
ользую рельсы 3 с монгоидом. У меня есть коллекция акций со встроенной коллекцией цен:
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
Я хотел бы получить акции, минимальная цена которых с заданной даты ниже заданной цены p, и затем иметь возможность сортировать цены для каждой акции.
Но, похоже, Mongodb не позволяет это сделать. Потому что это не сработает
@stocks = Stock.Where(:prices.value.lt => p)
Также кажется, что mongoDB не может сортировать внедренные объекты.
Итак, есть ли альтернатива для выполнения этой задачи?
Может быть, я должен положить все в одну коллекцию, чтобы я мог легко выполнить следующий запрос:
@stocks = Stock.Where(:prices.lt => p)
Но я действительно хочу получить результаты, сгруппированные по именам акций после моего запроса (например, отдельные акции с массивом упорядоченных цен). Я слышал о карте / уменьшить с групповой функцией, но я не уверен, как правильно использовать его с Mongoid.
http://www.mongodb.org/display/DOCS/Aggregation
Эквивалент в SQL будет примерно таким:
SELECT name, code, min(price) from Stock WHERE price<p GROUP BY name, code
Спасибо за вашу помощь.