我正在使用带有mongoid的rails 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
Run Code Online (Sandbox Code Playgroud)
我想得到自给定日期以来最低价格低于给定价格p的股票,然后能够对每种股票的价格进行排序.
但看起来Mongodb不允许这样做.因为这不起作用:
@stocks = Stock.Where(:prices.value.lt => p)
Run Code Online (Sandbox Code Playgroud)
此外,似乎mongoDB无法对嵌入对象进行排序.
那么,有没有替代方案来完成这项任务?
也许我应该将所有内容放在一个集合中,以便我可以轻松运行以下查询:
@stocks = Stock.Where(:prices.lt => p)
Run Code Online (Sandbox Code Playgroud)
但我真的希望在我的查询后以股票名称对结果进行分组(例如,具有一系列有序价格的不同股票).我听说过map/reduce with group function但我不确定如何正确使用Mongoid.
http://www.mongodb.org/display/DOCS/Aggregation
SQL中的等价物将是这样的:
SELECT name, code, min(price) from Stock WHERE price<p GROUP BY name, code
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我想在heroku雪松堆上运行phantomjs.
我正在使用phantomjs buildpack for heroku https://github.com/stomita/heroku-buildpack-phantomjs.但是我按照说明操作但仍无法使其正常工作.当我运行命令heroku run bash
并键入phantomjs --version
它时说phantomjs: command not found
我读了一些关于LD_LIBRARY_PATH的东西需要设置为"/ usr/local/lib:/ usr/lib:/ lib:/ app/vendor/phantomjs/lib",这是我做的但没有成功.
有什么东西我不见了吗?buildpack在哪里安装phantomjs二进制文件?有没有办法知道二进制文件的路径?
我正在使用ruby 1.9.2
非常感谢你的帮助.
编辑:更确切地说,我想结合ruby和phantomjs,所以我使用这个自定义buildpack:https://github.com/ddollar/heroku-buildpack-multi,但当我推送到heroku我得到"Heroku推拒绝,无法编译Multipack应用程序"