假设我有以下4个集合: 1-帖子 2-公司 3-组 4-用户 贝娄是我目前的结构:
他们的关系是:
现在我在存储用户,公司和群组与帖子集合的关系方面存在问题。
贝娄是我目前的结构:
我已决定在我的帖子文档中包含一个字段postable
,并且有一个type
字段,该字段将是' user'或' group' ,或者'公司'以及另外两个字段name
和id
,如果是公司/组id
和公司/组name
,则帖子属于公司或组,但不属于用户意味着type="group" || type="company"
。
现在我如何处理这个问题,将id
映射为group
和company
集合的FK(两个集合的一个字段FK)?
这是正确的结构吗?
答案 0 :(得分:2)
这里有一个多态关联。在关系数据库中,它通常用两个字段postable_id
和postable_type
实现。 type列定义要查询的表和id列确定记录。
你可以在mongodb中做同样的事情(事实上,这就是你提出的,减去命名约定)。但mongodb有一种特殊的字段类型,适用于这种情况:DBRef。基本上,它是一个升级的id字段。它不仅包含id,还包含集合名称(和数据库名称)。
我如何处理这个以将id映射为组和公司集合的FK(两个集合的一个字段FK)?
考虑到mongodb没有连接,你必须手动加载所有引用,我不知道这与常规FK字段有什么不同。只是集合名称现在存储在类型字段中,而不是硬编码。