MongoDb条件关系

时间:2017-10-03 08:26:03

标签: mongodb nosql

假设我有以下4个集合: 1-帖子 2-公司 3-组 4-用户 贝娄是我目前的结构: enter image description here

他们的关系是:

  • 公司拥有所有者和许多其他成员(用户集合)。
  • 一个小组有很多成员(用户)。
  • 用户有很多帖子。
  • 一个小组有很多帖子由其中一名成员发布。
  • 公司有许多帖子由其所有者或成员发布。

现在我在存储用户,公司和群组与帖子集合的关系方面存在问题。

贝娄是我目前的结构:

我已决定在我的帖子文档中包含一个字段postable,并且有一个type字段,该字段将是' user'或' group' ,或者'公司'以及另外两个字段nameid,如果是公司/组id和公司/组name,则帖子属于公司或组,但不属于用户意味着type="group" || type="company"

现在我如何处理这个问题,将id映射为groupcompany集合的FK(两个集合的一个字段FK)? 这是正确的结构吗?

1 个答案:

答案 0 :(得分:2)

这里有一个多态关联。在关系数据库中,它通常用两个字段postable_idpostable_type实现。 type列定义要查询的表和id列确定记录。

你可以在mongodb中做同样的事情(事实上,这就是你提出的,减去命名约定)。但mongodb有一种特殊的字段类型,适用于这种情况:DBRef。基本上,它是一个升级的id字段。它不仅包含id,还包含集合名称(和数据库名称)。

  

我如何处理这个以将id映射为组和公司集合的FK(两个集合的一个字段FK)?

考虑到mongodb没有连接,你必须手动加载所有引用,我不知道这与常规FK字段有什么不同。只是集合名称现在存储在类型字段中,而不是硬编码。