我有一个我很困惑的难题。
在rails控制台中,如果我使用
@o = ObjName.where(o_id: "VAL")
我没有收到退回的对象。我得到了这个:
=> #<Mongoid::Criteria
selector: {:conditions=>{:site_id=>"PST"}},
options: {},
class: Site,
embedded: false>
但如果我使用:
@o = ObjName.first(:conditions => {:o_id => "VAL"})
我愿意。在Mongoid中使用函数,我的模型包括Mongoid。所以我不明白为什么这不起作用。
答案 0 :(得分:5)
Mongoid在装载时非常懒惰。它只会执行查询并在迭代结果时将结果加载到对象中。
因此,Model.find将执行mongodb findOne方法并加载到结果中。
@o = ObjName.where(o_id=>"VAL").first #will push into an object
@o = ObjName.where(:status=>"whoknows").all
#query has not been loaded
@o.each do |o|
#now the query has been executed
puts o
end
答案 1 :(得分:0)
也许你在查询结束时只需要一个“.all”。