Когда это отношение belongs_to
, вы можете включить карту идентификации и выполнить два запроса, один для ваших основных документов, а затем один для всех связанных документов. Это лучшее, что вы можете сделать, поскольку Mongo не поддерживает объединения.
class Comment
include MongoMapper::Document
belongs_to :user
end
class User
include MongoMapper::Document
plugin MongoMapper::Plugins::IdentityMap
end
@comments = my_post.comments # query 1
users = User.find(@comments.map(&:user_id)) # query 2
@comments.each do |comment|
comment.user.name # user pulled from identity map, no query fired
end
(Mongoid имеет синтаксис для быстрой загрузки , но работает в основном так же.)