【问题标题】:Organise a many to many relationship in MongoDB在 MongoDB 中组织多对多关系
【发布时间】:2015-01-26 14:23:19
【问题描述】:

我正在构建一个电子商务 Rails 应用程序,我想在 ProductsUsers 之间建立关系。

用户可以“收藏”许多产品(并且产品可以被用户收藏)。

用户对他们看到的产品有“历史”。

在 SQL 数据库中,我知道我可以创建例如 History 表并放置 product_id 和 user_id。还有一个 Favorited 表,其中还包含 product_id 和 user_id。

但是在 MongoDB 中,我该如何建立这种关系呢?

我阅读了这篇博文:http://blog.markstarkman.com/blog/2011/09/15/mongodb-many-to-many-relationship-data-modeling/ 并意识到我可以在 Users 集合中创建一个产品数组,并在 Products 集合中创建一个用户数组。但是我不知道如何在 Users 集合中设置收藏的产品和历史产品。

提前致谢。

编辑

想法:我正在考虑创建两个模型(ProductFavorited 和 ProductHistory),继承自 Product 模型/集合并在用户集合中使用它。

【问题讨论】:

    标签: ruby-on-rails mongodb many-to-many


    【解决方案1】:

    MongoDB 中最好的数据模型是适合您的应用程序使用的模型。

    所以要问的问题是“您什么时候才能看到这些收藏的产品?它们是如何展示的?”和“你什么时候才能看到这个历史记录?它是如何显示的?”

    一些可能的答案和建议可能是:

    “用户将能够单击标有“收藏夹”的菜单项并查看 他们收藏的产品列表。”

    然后将您计划显示的信息存储在一个 用户文档上的favorites 数组。或者,如果您期望用户 文档变得太大,一个单独的favorites 集合 只有一个 user_id 为 _id ,然后是收藏夹数组 文档中唯一的其他元素。

    或者:

    “用户将转到产品页面并查看收藏该产品的其他用户的列表。”

    然后,将它与所有收藏该产品的用户一起存储在产品文档中是有意义的。或者,如果您认为 Product 文档会变得太大,那么在一个单独的集合中使用 product_id 作为_id 和 favorited_users 作为一个数组,这是文档中唯一的其他元素。

    要始终牢记的是数据将如何在您的应用程序中使用。

    Information about Data Model in MongoDB.

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2013-01-02
      • 2018-11-03
      • 1970-01-01
      • 2020-12-05
      • 2017-01-02
      • 1970-01-01
      • 2014-01-21
      • 2014-08-15
      相关资源
      最近更新 更多