2012-01-06 2 views
0

У меня есть структура документа в MongoDB так:Получить все поддокументы с помощью Mongoid/рубин

User 
|---> Posts 
     |----> Comments 

Таким образом, родительский документ User с коллекцией встроенных Post документов, которая сама по себе имеет набор встроенных Comment документов ,

Я хватаю User документ назад и теперь все дерево документа в памяти, например, так:

user = User.where(username: 'test').first 

С user, как я могу получить список всех комментариев?

ответ

1

Попробуйте что-то вроде этого:

user.posts.map{|p| p.comments}.flatten 

Или

user.posts.flat_map(&:comments) 
+0

Спасибо - я должен был изменить его 'user.posts.map {| р | p.comments} .flatten', и теперь он работает так, как ожидалось. – Martin

+0

@ Мартин: да, извините, это было плохо. Но я рад, что это помогло :-) –

+0

Вы можете сделать: 'user.posts.map (&: comments) .flatten' – user2503775

Смежные вопросы