Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDb条件关系_Mongodb_Nosql - Fatal编程技术网

MongoDb条件关系

MongoDb条件关系,mongodb,nosql,Mongodb,Nosql,假设我有以下4个集合: 1-员额 2-公司 3组 4-用户 以下是我目前的职位结构: 它们之间的关系是: 公司有一个所有者和许多其他成员(用户集合) 一个组有许多成员(用户) 一个用户有很多帖子 一个组有许多由其成员发布的帖子 一家公司有许多由其所有者或成员发布的帖子 现在我在存储用户、公司和组与posts collection的关系时遇到了一个问题 以下是我目前的结构: 我已决定在我的post文档中有一个字段可邮递,并有一个类型字段,该字段将是“用户”、“组”或“公司”,以及另外两个字段

假设我有以下4个集合: 1-员额 2-公司 3组 4-用户 以下是我目前的职位结构:

它们之间的关系是:

  • 公司有一个所有者和许多其他成员(用户集合)
  • 一个组有许多成员(用户)
  • 一个用户有很多帖子
  • 一个组有许多由其成员发布的帖子
  • 一家公司有许多由其所有者或成员发布的帖子
现在我在存储用户、公司和组与posts collection的关系时遇到了一个问题

以下是我目前的结构:

我已决定在我的post文档中有一个字段
可邮递
,并有一个
类型
字段,该字段将是“用户”、“组”或“公司”,以及另外两个字段
名称
,和
id
,即公司/集团
id
和公司/集团
name
,如果帖子属于公司或集团但不是用户,则表示
type=“group”| type=“company”

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

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

在mongodb中也可以这样做(事实上,这就是您所想到的,除去命名约定)。但是mongodb有一个专门针对这种情况的字段类型:。基本上,它是一个升级的id字段。它不仅携带id,还携带集合名称(和数据库名称)

如何处理此问题以将id映射为组和公司集合的FK(两个集合中的一个字段FK)


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

我不确定是否能看到这里的问题。@SergioTulentsev我只有两个问题。我的结构很好。2-是否可能有一个条件FK字段,根据另一个字段值,它将是不同集合的FK?答案很好!还有一个问题,我可以在
DBRef
中有额外的字段吗?假设我想要一些公司/集团的非规范化数据,比如公司/集团名称。@jones“我可以在DBRef中有额外的字段吗”-理论上看起来是可能的,但肯定是个坏主意。我自己还没有试过。你对我的非规范化数据有什么建议?@jones:你可以将非规范化数据存储在你的ref字段旁边