从关系数据库迁移到mongodb

从关系数据库迁移到mongodb,mongodb,mongoose,nosql,Mongodb,Mongoose,Nosql,多年来,我一直在LAMP堆栈中处理关系数据库,现在我正试图转移到MERN堆栈,因此我试图了解mongodb及其平面(?)设计 以前,如果我想让用户能够存储图像,我会与看起来类似的表行建立1:n关系 用户 0001test1@user.com2018-05-05 0002test2@user.com2018-05-05 0003test3@user.com2018-05-05 图像 001文件名1.jpg 0001 002文件名2.jpg 0001 003文件名3.jpg 0001 004文件名4

多年来,我一直在LAMP堆栈中处理关系数据库,现在我正试图转移到MERN堆栈,因此我试图了解mongodb及其平面(?)设计

以前,如果我想让
用户
能够存储
图像
,我会与看起来类似的表行建立1:n关系

用户

0001test1@user.com2018-05-05
0002test2@user.com2018-05-05
0003test3@user.com2018-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


images表中的最后一个数字是用户id。现在我已经阅读了关于mongodb的文章,但仍然遵循我将如何复制它,我会在我的用户集合中嵌入一个images集合(如嵌套对象),还是会有一个引用用户id的images集合?

我会说:这取决于

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

但如果您希望图像集合将与其他集合共享,或者在用户和图像集合之间存在多个关系**,最好考虑使用引用().< /P>


此外,如果您希望图像集合很大(多于几个项目),最好将引用作为解决方案-基本上是因为它更易于搜索。

DBRef
在任何较新的MongoDB功能中都不受支持。特别是允许“服务器连接”的主连接,
DBRef
不是。合适的解决方案是什么?@Udders这里有一些长期存在的答案,您已经在上面的问题链接中找到了这些答案。考虑是否嵌入参考的利弊,这不是一个简单的例子。如果您已经引用了数据,那么
$lookup
就是您想要的,它不支持
DBRef
。使用MongoDB的人会知道这一点,因此,任何人都不会使用和建议MongoDB。