使用Mongoid查询语法与Activerecord

Jer*_*ith 1 ruby ruby-on-rails mongodb

我有一个难以理解的难题.

在rails控制台中,如果我使用

@o = ObjName.where(o_id: "VAL")
Run Code Online (Sandbox Code Playgroud)

我没有得到一个返回的对象.我得到了这个:

 => #<Mongoid::Criteria
  selector: {:conditions=>{:site_id=>"PST"}},
  options:  {},
  class:    Site,
  embedded: false>
Run Code Online (Sandbox Code Playgroud)

但如果我使用:

@o = ObjName.first(:conditions => {:o_id => "VAL"})
Run Code Online (Sandbox Code Playgroud)

我做.在Mongoid中使用函数,我的模型包括Mongoid.所以我不明白为什么这不起作用.

Jes*_*ott 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
Run Code Online (Sandbox Code Playgroud)