where()。在mongoid上的第一个vs find_by

时间:2016-03-22 10:18:52

标签: ruby-on-rails ruby mongoid

带有mongoid的新手。

使用

之间是否存在任何性能影响差异
Model.where(:name => "XYZ").first

Model.find_by(:name => "XYZ")

我在控制台中看到这两个查询在查询中使用“限制1”(当我在Postgres上使用时)。在Mongoid中是否有相同的行为?

2 个答案:

答案 0 :(得分:3)

似乎find_by内部使用wherefirst

def find_by(attrs = {})
  result = where(attrs).find_first
  if result.nil? && Mongoid.raise_not_found_error
    raise(Errors::DocumentNotFound.new(self, attrs))
  end
  yield(result) if result && block_given?
  result
end

答案 1 :(得分:0)

以上评论解释了内部原理。我看到了性能上的比较。这是github代码和结果链接。 Performance Comparison

enter image description here