Ruby on rails mongoid返回对象包含引用
所以我使用Mongoid,我想返回一个对象及其引用。假设我有:Ruby on rails mongoid返回对象包含引用,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,所以我使用Mongoid,我想返回一个对象及其引用。假设我有: class User include Mongoid::Document has_many :pictures end class Picture include Mongoid::Document belongs_to :user end 此代码存在问题: users = User.all #goes to the db users.each do |user| pic = user.pictures.fi
class User
include Mongoid::Document
has_many :pictures
end
class Picture
include Mongoid::Document
belongs_to :user
end
此代码存在问题:
users = User.all #goes to the db
users.each do |user|
pic = user.pictures.first # <--- bad! hitting the db again here
end
users=User.all#进入数据库
用户。每个do |用户|
pic=user.pictures.first#这通常通过加入ActiveRecord来完成。大概是这样的:
User.includes(:pictures).each do |user|
但由于MongoDB不支持联接,所以无法一次性加载父文档及其引用的文档。如果这成为一个问题,你应该考虑在用户文档中嵌入图片(但是,这可能会导致更严重的性能损失)。
更新
Mongoid有一种方法(在页面中搜索“急切加载”)引用关系,但仍然会进行单独的查询。在后续访问关系时不会命中数据库