1

我正在使用 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

为什么这使用sortand limit?手动查找项目时不会发生这种情况:

> Project.find(user.project_id)
... DEBUG -- : MONGODB ... STARTED | {"find"=>"projects", "filter"=>{"_id"=>BSON::ObjectId('5accdd5775aefb2d085087e2')}}
... DEBUG -- : MONGODB ... SUCCEEDED | 0.000278153s

在某些情况下,它似乎更慢并且破坏了 mongoid 查询缓存的使用。

4

0 回答 0