【问题标题】:Query with filtred fields for nested objected使用过滤字段查询嵌套对象
【发布时间】:2011-12-24 21:44:24
【问题描述】:

假设我有一份文件

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

我要获取带有嵌入对象章节的书籍对象,但每个章节不应包含嵌套的“部分”(但应包含其他属性,如标题):

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

我应该如何使用 Mongo driverMongoid(或 Mongomapper)进行查询?

我用 mongoid 试过了:

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

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid mongomapper


    【解决方案1】:

    您的查询

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

    在books.all 上选择所有包含其章节嵌入文档的书籍,因此在章节之后使用“only”没有任何意义。如果章节作为单独的文档并获得 has_many 关系而不是 embeds_many,则您的查询可以工作

    所以你必须像这样在书籍文档上使用'only'

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

    【讨论】:

    • 请停止签署所有答案!上帝,有负载!
    • 您的 443 个答案中的每一个都以“干杯”结尾
    • 这不是必需的,而且它们往往会被编辑掉(虽然 443 对我来说有点多>.
    • 这就像说谢谢……这就是老兄。有成千上万的帖子到处都是感谢和欢呼.. :(无论如何我现在就停止签名..
    • (我知道这意味着什么)是的,我会尽可能删除它们!感谢是含蓄的;你正在写一个答案,而不是一封信。 :)
    猜你喜欢
    • 2022-12-14
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多