Запрос с отфильтрованными полями для вложенных возражений - PullRequest
0 голосов
/ 09 ноября 2011

допустим, у меня есть документ

book: {name: "book", 
   "chapters":[{title: "Chapter I", 
   "sections":[{},{}]
   }, {...}
]}

И что получить объект книги со встроенными главами объектов, но каждая глава не должна содержать вложенных «разделов» (но должна содержать другие атрибуты, такие как заголовок):

book: {name: "Book", 
   "chapters":[{title: "Chapter I"
   }, {...}
]}

Как мне сделать запрос, используя драйвер Mongo и Mongoid (или Mongomapper )?

Я пробовал это с монгоидом:

books.all[0].chapters.only(:title)[0].sections # it still works, though I expect sections to be nil

1 Ответ

1 голос
/ 09 ноября 2011

ваш запрос

 books.all[0].chapters.only(:title)[0].sections 

выбирает книги со всеми вложенными в главы документами на books.all, поэтому нет смысла использовать «только» после глав. Ваш запрос может работать, если главы представлены в виде отдельных документов и вместо этого имеют отношение has_many embeds_many

Таким образом, вы должны использовать «только», как это в книжном документе

 books.only('chapters.title').all[0].chapters.sections 
...