【问题标题】:MongoDB, Mongoose, Foreign keys, Joining TablesMongoDB、Mongoose、外键、连接表
【发布时间】:2015-12-15 15:17:33
【问题描述】:

我一直在网上寻求有关 MongoDB 外键关系的帮助。

我想知道是否可以在MongoDB中实现主/外键关系,类似于MYSQL?

如果没有,还有其他人推荐使用的节点包吗?

我只是想链接两个集合,学生和班级?如果有人能够提供帮助,那就太好了。谢谢。

【问题讨论】:

  • 我认为这是一个合理的问题。如果您是 Mongodb 的新手并且来自关系数据库背景,那么问这些问题是很正常的

标签: mysql node.js mongodb mongoose


【解决方案1】:

“主键”的 MongoDB 等效项是每个文档的字段 _id。默认情况下,它填充了一个唯一的 ObjectId,但是当您有一个更适合您的数据的主键时,您可以将其分配给 _id 字段(当您的“主键”是多个字段时,使其成为子文档分配给_id)。

MongoDB 在文档之间没有明确声明的外键关系。毕竟,它不是关系数据库。当然,这并不会阻止您在每个 Student 文档中以字段形式拥有“未声明的”外键,这是它所属的 Class 文档的唯一标识符。

或者,您可以将属于同一 ClassStudents 作为数组嵌入到 Class 文档中。这是否是一个好主意取决于您打算如何使用您的数据。

理想的 MongoDB 架构在很大程度上取决于数据的结构方式,而是取决于您要对其执行的查询。当您设计数据模式时,关系数据库用户需要了解的一件重要事情是 MongoDB 不执行 JOIN。当您想要加入时,您需要在应用程序中执行它们。因此,对于任何性能关键的用例,您应该避免任何需要从多个集合中获取数据的设计。

【讨论】:

  • 感谢您的回复 - 很抱歉这个糟糕的问题 - 我是使用 Mongo 的新手 - 你会推荐使用 MySQL 节点包吗?这对于关系数据库来说看起来更好,并且更适合我。
  • @user3180997 我从来没有用过,所以我不能说什么。但仅仅因为 MongoDB 受到许多 Node.js 开发人员的欢迎并不意味着它是任何项目的最佳技术。
猜你喜欢
  • 2020-11-02
  • 1970-01-01
  • 2020-06-07
  • 2018-07-10
  • 2019-10-23
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多