从关系数据库迁移到MongoDB



多年来,我一直在 LAMP 堆栈中使用关系数据库,我现在正在尝试迁移到 MERN 堆栈,因此试图了解 mongodb 和它的扁平(?)设计。

以前,如果我希望user能够存储images我会与看起来与此类似的表行建立 1:n 关系,

用户

0001 test1@user.com 2018-05-05
0002 test2@user.com 2018-05-05
0003 test3@user.com 2018-05-05

图像

001 文件名1.jpg 0001
002 文件名2.jpg 0001
003 文件名3.jpg 0001
004 文件名4.jpg 0002
005 文件名5.jpg 0002
006 文件名6.jpg 0003

图像表中的最后一个数字是user_id。现在我已经阅读了有关mongodb的信息,但仍然遵循我将如何复制它,我会在我的用户集合中嵌入一个图像集合,就像嵌套对象一样,还是我会有一个以某种方式引用用户ID的图像集合?

我会说:这取决于。

如果图像实体未与其他表共享,并且无法独立访问(无需访问用户),则可以将它们作为数组字段保留在 User 集合中。

但是,如果希望图像集合将与其他集合共享,或者用户和图像集合之间存在 * 对多关系,则最好考虑使用引用 (https://docs.mongodb.com/manual/reference/database-references/)。

此外,如果您预计图像集合会很大(超过几个项目),最好将参考作为解决方案 - 主要是因为它更容易搜索。

最新更新