如何使用Ruby on Rails与Mongodb进行查询?

时间:2015-02-17 18:48:07

标签: ruby-on-rails mongodb

我有一个对象Post,有一些属性。我希望通过单个属性搜索那里的对象。在我的例子中,它会是如此

[58] pry(main)> Post.last
=> #<Post _id: 54e3852d776561352d020000, title: "123456", body: "4131231", draft: false, user_id: BSON::ObjectId('54e22da377656150d5000000')>

需要通过'draft'属性找到。在postgres我会这样做

Post.where("draft = ?", false)

但是如何只做同样的Mongodb?

UPD

[72] pry(main)> Post.where("draft = ?", false)
ArgumentError: wrong number of arguments (2 for 1)
from /home/weare138/.rvm/gems/ruby-2.1.5/bundler/gems/mongoid-660868d73b36/lib/mongoid/criteria.rb:416:in `where'

2upd

[2] pry(main)> Post.where(draft: false)
=> #<Mongoid::Criteria
  selector: {"draft"=>false}
  options:  {}
  class:    Post
  embedded: false>

2 个答案:

答案 0 :(得分:0)

您可以使用:

Post.where(draft: false).each { |rec| puts rec.title }
# or you can write
Post.where("this.draft == false").each do |rec|
  puts rec.title
end

注意:#where会为您提供Mongoid::Criteria个对象而非实际记录。您必须使用#each#first遍历此对象以获取第一条记录等。

答案 1 :(得分:0)

您可以在irb中尝试此操作并查看标题是否显示:

Post.where(draft: false).map(&:title)