Mongoid, где против найти при использовании идентификатора в качестве критерия - PullRequest
5 голосов
/ 23 марта 2012

при использовании идентификатора документа в качестве единственного критерия в моем запросе, в чем разница между:

Board.only(:_id).find(params[:board_id])

и

Board.where(_id: params[:board_id]).only(:_id)

единственное, что я заметил, - это печать результатакак json при использовании, где он заключает результат в квадратные скобки

Ответы [ 3 ]

9 голосов
/ 23 марта 2012

find возвращает один документ.

where возвращает массив документов, соответствующих критериям.

4 голосов
/ 24 марта 2012

Добавить к ответу Кайла:

Если соответствующая запись не найдена: find выдает исключение, where возвращает пустое перечисляемое значение.

0 голосов
/ 13 октября 2015

Предыдущие ответы верны, я просто добавлю, что, чтобы найти одну запись без появления ошибки, эквивалент find равен where.first.В вашем случае

Board.where(_id: params[:board_id]).first.only(:_id)
...