Mongoid: Como carregar apenas alguns campos de um objeto que você carrega preguiçosamente via referência?

Por motivo de desempenho, uso com a maior freqüência possívelonly() palavra-chave ao escrever uma consulta mongóide para especificar os campos que eu quero carregar.

O suspeito habitual é, por exemplo, quando eu quero o e-mail de um usuário de todos os meus administradores apenas para fins de exibição.

Eu escreveria:

User.where(:groups => :admins).only(:email).each do |u|
 puts u.email
end

Eu faço isso porque meu modelo de usuário é bastante cheio de muitos dados que eu posso ignorar com prazer ao listar um monte de e-mails.

Porém, agora vamos imaginar, que meus usuários sejam referenciados através de um modelo de Projeto, para que para cada projeto eu possa fazer:project.user. Graças ao carregamento lento de mongoid, meu usuário de objeto só será instanciado (e consultado pelo DB) quando eu chamar a referência.

Mas e se eu quiser listar todos os e-mails do proprietário de todos os projetos de administração, por exemplo?

Eu escreveria isto:

Project.where(:admin_type => true).each do |p|
  puts p.user.email
end

O maior problema aqui é que, ao fazer isso, carrego o objeto de usuário inteiro para cada projeto e se houver muitos projetos correspondentes à consulta que podem ficar muito pesados. Então, como eu carrego apenas os e-mails?

Eu poderia fazer isso:

User.where(:_id => p.user_id).only(:email).first.email

Mas isso obviamente derrota o propósito da bela sintaxe de simplesmente fazer:

p.user.email 

Eu gostaria de poder escrever algo como:p.user.only(:email).emailmas não posso. Alguma ideia ?

Alex