首页 > 解决方案 > 从关系数据库迁移到 mongodb

问题描述

多年来,我一直在 LAMP 堆栈中使用关系数据库,现在我正试图转移到 MERN 堆栈,结果试图让我的头脑了解 mongodb,它是平面(?)设计。

以前,如果我希望 auser能够存储,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 的图像集合?

标签: mongodbmongoosenosql

解决方案


我会说:这取决于。

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

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

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


推荐阅读