/ / where (). first vs find_by on mongoid - ruby-on-rails, ruby, mongoid

where (). first vs find_by on mongoid - ruby-on-rails, ruby, mongoid

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 № 1

Wydaje 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