我正在使用轨道3与mongoid.
我有一个收藏的股票与嵌入收藏价格:
我有一个收藏的股票与嵌入收藏价格:
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)
但是,我真的希望在查询之后得到按股票名称分组的结果(例如,具有订单价格数组的不同股票).我已经听说过map / reduce与组功能,但我不知道如何正确使用Mongoid.
http://www.mongodb.org/display/DOCS/Aggregation
sql中的等价物将是这样的:
SELECT name,code,min(price) from Stock WHERE price<p GROUP BY name,code
谢谢你的帮助.