Я использую mongoid 6, и у меня есть две модели в моем проекте:
class User
belongs_to :project
end
class Project
has_many :users
end
Когда я получаю доступ к проекту из пользовательского экземпляра, я вижу этот журнал mongodb:
> user.project
... DEBUG -- : MONGODB ... STARTED | {"find"=>"projects", "filter"=>{"_id"=>BSON::ObjectId('5accdd5775aefb2d085087e2')}, "sort"=>{"_id"=>1}, "limit"=>1, "singleBatch"=>true}
... DEBUG -- : MONGODB ... SUCCEEDED | 0.000482198s
Почему для этого используются sort
и limit
? Этого не происходит, когда вы находите проект вручную:
> Project.find(user.project_id)
... DEBUG -- : MONGODB ... STARTED | {"find"=>"projects", "filter"=>{"_id"=>BSON::ObjectId('5accdd5775aefb2d085087e2')}}
... DEBUG -- : MONGODB ... SUCCEEDED | 0.000278153s
Это кажется медленнее и прерывает использование кэширования mongoid запросов в некоторых случаях.