首页 > 解决方案 > 我应该使用“指针”来引用另一个集合中的对象,还是直接存储这些对象(MongoDB)?

问题描述

我有两个潜在的集合 1) 帐户和 2) 工作。Accounts 集合存储“帐户”文档,其中包含有关用户帐户的信息。字段包括用户名、电子邮件、密码、描述等。

Jobs 集合包含“Job”文档,其中包含有关工作的信息,具有以下字段:标题、描述、创建日期、相关技能等。

本质上,用户可以创建作业,因此这两个集合是绑定在一起的,因为我想在用户仪表板 UI 上显示作业。我已经想到了 3 种方案来实现这一目标:

  1. 每个 Job 文档都有一个UserID字段,该字段充当指向创建作业的相应帐户的指针。加载仪表板时,会在作业集合中对UserID与 accountID 匹配的所有字段进行查询。
  2. 每个 Account 文档都有一个 field JobIDs,它是一个“指针”数组,它引用由一个帐户创建的每个 JobID。当仪表板加载时,它会遍历这个数组,根据 JobID 执行查询以在 Jobs 集合中查找相应的作业。
  3. 在每个 Account 文档上,只有一个jobs字段,它是一个对象数组,每个对象代表一个作业。

哪个是最好的实现,为什么?我意识到对于选择 3,似乎不必进行任何查询的好处,但潜在的巨大文档的缺点。使用“指针”实现,搜索整个集合会很慢吗?

标签: databasemongodbdatabase-designschema

解决方案


推荐阅读