标签: mongoid

查询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万
查看次数

mongoid多参数属性问题与日期

我一直在关注mongoid railscast,当我添加一个新字段时,我面临一个多参数属性问题 field :published_on, :type => Date

Article.find("4da14b1447640b14eb000002").published_on 
=> nil
Run Code Online (Sandbox Code Playgroud)

但随着 Article.find('4da14b1447640b14eb000002')

=> published_on: nil, published_on(1i): "2011", published_on(2i): "6", published_on(3i): "10"
Run Code Online (Sandbox Code Playgroud)

我如何获得欲望输出?

我知道有一个临时解决方案https://gist.github.com/315227

但是这个问题的问题已经关闭,我有最新的2.0.1 mongoid gem,但问题就出现了.

ruby-on-rails mongoid

16
推荐指数
2
解决办法
2700
查看次数

mongoid查询缓存

Rails的ActiveRecord有一个名为Query Caching(ActiveRecord :: QueryCache)的功能,可以保存请求生命周期的SQL查询结果.虽然我不太熟悉实现的内部,但我认为它将查询结果保存在Rack env中,在请求结束时将其丢弃.

遗憾的是,Mongoid目前还没有提供这样的功能,而且有些查询是隐式发生的(引用),这加剧了这种情况.我正在考虑实现这个功能,我很好奇,Mongoid(或者,也许是mongo驱动程序?)的位置和方式应该被挂钩以实现它.

ruby caching rack mongoid ruby-on-rails-3

16
推荐指数
3
解决办法
8389
查看次数

无法连接到副本集的主节点<Moped :: Cluster nodes = [<Moped :: Node resolved_address ="127.0.0.1:27017">]>

我正在关注Devise和Mongoid的RailsApp教程(http://railsapps.github.io/tutorial-rails-mongoid-devise.html),当我到达'Rake db:seed'时遇到以下错误在"设置数据库种子文件"部分.

Could not connect to a primary node for replica set <Moped::Cluster nodes=[<Moped::Node resolved_address="127.0.0.1:27017">]>
Run Code Online (Sandbox Code Playgroud)

我在这里尝试过nixoncd的说明,但没有解决问题.它告诉我'文件存在'和'已经加载'.' https://groups.google.com/forum/#!topic/mongodb-user/Hhh8iNCciMk

如果我在终端输入'mongod',我会得到这个.

ERROR: could not read from config file
Run Code Online (Sandbox Code Playgroud)

欢迎任何帮助.我在使用自制软件安装Mongoid的Mac OSX Mountain Lion上 - 尽管使用下载软件包mongodb.org安装了MongoDB.

MongoDB shell版本:2.4.6

谢谢

编辑:我不确定这个问题是否相关.还有启动mongoDB的问题.还发布了这里的问题: mongoDB,无法从配置文件中读取 - 在不同文件夹中配置/卸载它?

homebrew ruby-on-rails mongodb mongoid

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

15
推荐指数
2
解决办法
4442
查看次数

Rails:在MongoDB中存储JSON

我从远程站点获取多个类似的JSON对象,并希望将它们存储在本地MongoDB中.

最好的方法是什么?(最好通过Mongoid或Mongo-mapper宝石)

谢谢

ruby-on-rails mongodb mongomapper mongoid

15
推荐指数
2
解决办法
8065
查看次数

field_for和嵌套形式与mongoid

有人可以给我使用mongoid的嵌套表单的工作示例吗?

我的模特:

class Employee 
  include Mongoid::Document 
  field :first_name 
  field :last_name 
  embeds_one :address 
end

class Address 
  include Mongoid::Document 
  field :street 
  field :city 
  field :state 
  field :post_code 
  embedded_in :employee, :inverse_of => :address 
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails mongoid ruby-on-rails-3

15
推荐指数
1
解决办法
8361
查看次数

在Rails中使用Mongoid的MongoDB - 地理空间索引

MongoDB具有非常好的地理空间索引功能.我怎样才能在带有Mongoid的Rails中使用它?

ruby ruby-on-rails geolocation mongodb mongoid

15
推荐指数
2
解决办法
8764
查看次数

Mongoid和simple_form,布尔类型不会创建复选框

我从mongoid和simple_form开始.如果我有一个模型:type => Boolean并在带有= f.input的(haml)视图中渲染它,它会创建一个文本输入字段而不是一个复选框.

doc说boolean映射到一个复选框,但我怀疑布尔值和布尔值的处理方式不同.

我可以通过向simple_form添加:as => boolean来解决这个问题.

1)这是预期还是我做错了什么?2)有没有办法添加布尔到simple_form的一般映射?3)我应该为simple_form生成一个问题来纠正这个问题吗?

提前致谢.

mongoid ruby-on-rails-3 simple-form

15
推荐指数
1
解决办法
2027
查看次数

使用mongoid查看MongoDB中的现有索引

我想看看MongoDB使用的现有索引.我可以做相同的

$ mongod
> use my_db
> db.system.indexes.find()
Run Code Online (Sandbox Code Playgroud)

使用Mongoid?

$ rails console
> ?
Run Code Online (Sandbox Code Playgroud)

使用MongoHQ从我的heroku应用程序很方便.谢谢!

indexing mongoid

15
推荐指数
1
解决办法
4775
查看次数