Nowicjusz na szynach z mongoidem.
Czy jest jakaś różnica w wydajności między używaniem
Model.where(:name => "XYZ").first
i
Model.find_by(:name => "XYZ")
Widzę w konsoli, że oba te zapytania używają "Limitu 1" w zapytaniu (kiedy użyłem w PostgreSQL). Czy to samo zachowanie w Mongoid?
Odpowiedzi:
2 dla odpowiedzi № 1Wydaje się find_by
używa gdzie i najpierw wewnętrznie
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