小编mat*_*rip的帖子

查询Mongoid/rails 3中的嵌入对象("低于",Min运算符和排序)

我正在使用带有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)

谢谢你的帮助.

mapreduce ruby-on-rails mongodb mongoid

16
推荐指数
1
解决办法
1万
查看次数

如何在heroku上运行phantomjs?

我想在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应用程序"

ruby heroku phantomjs

11
推荐指数
1
解决办法
7484
查看次数

标签 统计

heroku ×1

mapreduce ×1

mongodb ×1

mongoid ×1

phantomjs ×1

ruby ×1

ruby-on-rails ×1