destroy
выполняет обратные вызовы модели и затем выполняет запрос REMOVE к БД. delete
просто выполняет запрос REMOVE к БД.
имена взяты из ActiveRecord
, поэтому они не очень хорошо соответствуют монго.
Вы можете увидеть delete
как оптимизацию по сравнению с destroy
.Когда вы используете destroy
, вы гарантируете, что выполняются обратные вызовы before_destroy
, поэтому выполняется правильная очистка.С другой стороны, если вы делаете что-то вроде Model.destroy_all
, он должен загрузить ВСЕ элементы, а затем сделать запрос REMOVE для каждого из них, независимо от того, выполняет ли Model.delete_all
только один запрос.