mongodb - 从关系数据库迁移到 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 的图像集合?
解决方案
我会说:这取决于。
如果您的 Image 实体未与其他表共享并且无法独立访问(无需访问用户),您可以将它们作为数组字段保存在 User 集合中。
但是,如果您希望图像集合将与其他集合共享,或者用户和图像集合之间存在 *-to-many 关系,最好考虑使用引用(https://docs.mongodb.com/manual/reference/数据库参考/)。
此外,如果您希望图像集合很大(超过几个项目),最好将参考作为解决方案 - 主要是因为它更容易搜索。
推荐阅读
- mongodb - mongodb和elasticsearch之间的实时同步
- mysql - 如何按月份名称按时间顺序而不是按字母顺序排序?
- c++ - 函数返回空指针而不是地址
- bash - Bash getopts 数组为空
- php - 本地主机中的 woocommerce rest api 产品图像
- php - PHP Laravel 如何对每个月的日期进行分组并显示它们
- twitter-bootstrap - 如何在模板中使用相同的代码而不重复
- tkinter - Tkinter filedialog 正在窃取焦点,并且在 Python 3.4.1 中没有“Alt-tab”的情况下不会返回它
- wordpress - 如何将 rel 属性添加到古腾堡画廊中的链接
- r - ggplot2图例:结合离散颜色和连续点大小