我正在使用带有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)
谢谢你的帮助.
我一直在关注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,但问题就出现了.
Rails的ActiveRecord有一个名为Query Caching(ActiveRecord :: QueryCache)的功能,可以保存请求生命周期的SQL查询结果.虽然我不太熟悉实现的内部,但我认为它将查询结果保存在Rack env中,在请求结束时将其丢弃.
遗憾的是,Mongoid目前还没有提供这样的功能,而且有些查询是隐式发生的(引用),这加剧了这种情况.我正在考虑实现这个功能,我很好奇,Mongoid(或者,也许是mongo驱动程序?)的位置和方式应该被挂钩以实现它.
我正在关注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,无法从配置文件中读取 - 在不同文件夹中配置/卸载它?
我从远程站点获取多个类似的JSON对象,并希望将它们存储在本地MongoDB中.
最好的方法是什么?(最好通过Mongoid或Mongo-mapper宝石)
谢谢
有人可以给我使用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) MongoDB具有非常好的地理空间索引功能.我怎样才能在带有Mongoid的Rails中使用它?
我从mongoid和simple_form开始.如果我有一个模型:type => Boolean并在带有= f.input的(haml)视图中渲染它,它会创建一个文本输入字段而不是一个复选框.
doc说boolean映射到一个复选框,但我怀疑布尔值和布尔值的处理方式不同.
我可以通过向simple_form添加:as => boolean来解决这个问题.
1)这是预期还是我做错了什么?2)有没有办法添加布尔到simple_form的一般映射?3)我应该为simple_form生成一个问题来纠正这个问题吗?
提前致谢.
我想看看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应用程序很方便.谢谢!
mongoid ×10
mongodb ×5
ruby ×3
mongomapper ×2
caching ×1
geolocation ×1
homebrew ×1
indexing ×1
mapreduce ×1
rack ×1
simple-form ×1