我正在使用 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
and limit
?手动查找项目时不会发生这种情况:
> Project.find(user.project_id)
... DEBUG -- : MONGODB ... STARTED | {"find"=>"projects", "filter"=>{"_id"=>BSON::ObjectId('5accdd5775aefb2d085087e2')}}
... DEBUG -- : MONGODB ... SUCCEEDED | 0.000278153s
在某些情况下,它似乎更慢并且破坏了 mongoid 查询缓存的使用。