【问题标题】:Mongoid / Mongodb and querying embedded documentsMongoid / Mongodb 和查询嵌入文档
【发布时间】:2011-04-26 15:41:00
【问题描述】:

我有 AuthorBook 模型。

一个Author 有许多嵌入的Books

我可以查询嵌入的Books,还是必须先获取Authors才能得到Books

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid


    【解决方案1】:

    您可以查询嵌入的文档,只需限定名称即可。现在,这将返回所有拥有与您的查询匹配的书籍的作者。

    如果作者被定义为有很多 :books(并且 book 是一个嵌入的::document)

    @authors_with_sewid = Author.where("books.name" => "sewid").all
    

    然后您需要遍历作者并提取书籍。

    【讨论】:

    • 好的,非常感谢。如果我有嵌入和参考文档的混合,我是否也可以查询参考文档?例如,作者模型有一个创建者字段,其中包含用户的 ID。是否可以做'Author.where("book.name" = "sewid").and("creator.username" => "example")'?第一次尝试失败。
    • 一旦它们被引用对象,您将需要一个联接。并且在 mongodb 的土地上没有加入。
    • 在这种情况下,最好的办法是对您的数据进行非规范化并将创建者用户名与作者一起存储。
    • 只是一个快速通知。应该是 ("books.name" => "sewid"),因为作者有很多嵌入的书籍。
    • 请注意,仍然可以进行更复杂的查询,例如:all_of({:'books.name' => 'name'}, {:'books.author' => /joe/i})
    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 2015-04-23
    • 2015-02-06
    • 2018-03-20
    相关资源
    最近更新 更多