我有一个对象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>
答案 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)