Mongodb 实现多对多的方法?

Mongodb ways of implementing many to many?

我开始阅读 MongoDB(这让我非常兴奋),因为我知道他们的缺点之一是不言自明的缺乏关系。特别是当涉及到双方的大型或不断增长的多对多关系时。

而且,正如我所读到的,避免在某些文档中不断增长数组的最佳方法是尝试通过创建文档桶然后引用这些桶来避免它(这不能保证完全防止过度增长)。或者创建引用第三个多对多文档的两个文档。

由于我找不到这个难题的最终答案,或者至少找不到一个不会有几年的答案,有人可以解释一下这是否是死胡同(以防项目使用一些大的(曾经增长)多对多关系)我应该切换到 RDBMS?

这取决于您的用例

主要问题是你真的知道为什么要首先使用 MongoDB 吗?希望原因不是因为趋势。 RDBMS 仍然具有相关性并且有自己的用例。对于某些应用程序,RDBMS 是适合某些应用程序的方法。

现在回到你最初关于多对多关系的问题。正如您已经研究过的那样,有一些方法可以在 MongoDB 中对这些关系进行建模。所以这并没有取消 MongoDB 作为数据库的资格。例如,当您为那些多对多关系插入或删除记录时,您需要事务性或参照完整性检查吗?如果答案是肯定的,那么 MongoDB 可能不适合您的情况。

当我第一次开始研究 MongoDB 时,这个确切的问题闪过我的脑海,在寻找答案的过程中,我读到了一些非常有趣的东西(希望我能为你找到 link,但不幸的是我没有)。

想一想现实世界中的问题,您有一个不断增长的多对多关系?可能会有这种非常特殊的情况。

假设很多学生注册了很多课程。现在一门课程可能有 100 名学生注册,但可以肯定的是,一个学生不会注册 100 门课程,因此您可以简单地在学生集合中为已注册课程 ID 保留一个数组字段。

让我们深入探讨一下,有一群超级聪明的学生实际上注册了 100 门课程,在这种情况下,数组字段可能不是一个可行的解决方案。然后 ?一个只有 student_id 和 course_id 的集合怎么样?这甚至也存在于 RDBMS 世界中。

因此,可用的解决方法应该足以为可能最复杂的场景找到并设计优化的解决方案。