【问题标题】:Mongoid Query Related CollectionMongoid 查询相关集合
【发布时间】:2015-05-31 01:46:28
【问题描述】:

我正在尝试弄清楚如何在 Mongoid 中查询相关集合。

这是我的对象模型(为简洁起见):

Category
-------------------
class Category
    include Mongoid::Document

    field :name, type: String
    ...
    belongs_to: product
end

class Product
   include Mongoid::Document

   field :name, type: String
   ...
   has_one :category
end

我正在尝试构建一个查询以获取具有特定名称的类别的所有产品,例如“玩具”

products = Product.where('category.name' => 'Toy')

我得到了一个 nil 集合。我认为 mongoid 不直接支持这种类型的查询。如何构建一个可以完成此任务的查询?

【问题讨论】:

    标签: ruby-on-rails mongoid


    【解决方案1】:

    试试下面的

    category = Category.find_by(name: 'Toy')
    # all the following will work
    products = Product.where(category: category)
    products = Product.where(category_id: category.id)
    

    这会起作用的,but it's not recommended to use mongoid this way

    Mongoid 为习惯于处理关系数据库的应用程序开发人员提供了关系样式的关联,但我们不建议您广泛使用这些关联。

    【讨论】:

    • 是的,我有一种感觉,这可能不是一个好的 mongoid 做事方式。我想我将为产品中的每个类别都有一个数组字段。但是,我仍然希望有一个包含类别列表的单独集合,以便我可以轻松地显示类别列表(带有额外信息)。这将导致两个模型没有任何关联。那会是更好的设计吗?我确实意识到,在这种情况下,我需要在应用程序层强制执行数据完整性,但类别名称的更改非常少见。
    • 不,你误会了......你的场景是完全正确和正确的......我对你如何获取数据的回答......是正确的......不推荐的评论是关于使用mongodb 作为关系数据库...如果您有足够的时间阅读this article 请这样做...因为您将了解 nosql 数据库及其局限性...引用应该是... 不建议使用 mongodb/mongoid 作为关系数据库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多