#ruby-on-rails #mongodb #mongoid #mongomapper
#ruby-on-rails #mongodb #mongoid #mongomapper
Вопрос:
допустим, у меня есть документ
book: {name: "book",
"chapters":[{title: "Chapter I",
"sections":[{},{}]
}, {...}
]}
Я хочу получить объект book с главами встроенных объектов, но каждая глава не должна содержать вложенных «разделов» (но должна содержать другие атрибуты, такие как title):
book: {name: "Book",
"chapters":[{title: "Chapter I"
}, {...}
]}
Как я должен выполнить запрос, используя драйвер Mongo и Mongoid (или Mongomapper)?
Я пробовал это с mongoid:
books.all[0].chapters.only(:title)[0].sections # it still works, though I expect sections to be nil
Ответ №1:
ваш запрос
books.all[0].chapters.only(:title)[0].sections
выбирает книги со всеми их документами, встроенными в главы, в книгах.все, поэтому нет смысла использовать ‘только’ после глав. Ваш запрос может сработать, если главы представлены как отдельные документы и вместо них установлена связь has_many embeds_many
Таким образом, вы должны использовать ‘only’, подобный этому, в документе books
books.only('chapters.title').all[0].chapters.sections
Комментарии:
1. Пожалуйста, прекратите подписывать все свои ответы! Боже, сколько всего!
2. Каждый из ваших 443 ответов заканчивается «Приветствиями» в отдельной строке
3. Это просто не обязательно, и они, как правило, редактируются (хотя 443 для меня многовато >.<)
4. это все равно, что сказать спасибо.. вот и все, чувак. повсюду тысячи постов с благодарностями и приветствиями .. : ( в любом случае, теперь я перестану подписывать frm..
5. (Я знаю, что это значит) Да, и я удаляю их, где это возможно! Благодарность подразумевается; вы пишете ответ, а не письмо. 🙂