gpt4 book ai didi

mongodb - 基础mongodb理论

转载 作者:IT老高 更新时间:2023-10-28 13:22:49 26 4
gpt4 key购买 nike

这无疑是一个愚蠢的问题,当答案指出这一切的简单明了时,我们都可以笑这是多么愚蠢,但我似乎无法坚定地灌输关系数据库的艺术完全了解 mongodb - 无论我阅读了多少文章或观看了多少视频。

这是我的情况。我有一个可能拥有数百万用户的项目。核心功能:

  • 拥有 4 种不同类型的用户列表
  • 其中一种用户可以创建事件
  • 其他类型的用户可以申请在事件中表演(然后在申请方和组织方之间有一个请求系统来商定条款)
  • 其他用户类型可以参加事件
  • 所有用户类型都可以关注事件
  • 每个用户都可以将无限数量的图片上传到他们的“图库”

现在我会立即知道如何规范化 MySQL 数据库并加入查询以获取我需要的数据,但是 mongodb 呢?

由于所有这些信息都与用户有关,我是否只需为用户创建一个集合?我要为每个用户创建一个文档吗?该文档是否存储了与该用户相关的事件、请求和图像的所有详细信息 - 或者只是我交叉引用的这些事物的某种 id?如果不是这样,这不会复制大量数据 - 即,如果我必须为每个关注/参加/执行该事件的用户复制所有事件数据并将其放入该用户文档中(我确信情况并非如此- 但是如果没有加入,如果事件存储在另一个集合中,我如何获得“加入”用户和所有事件数据?)。图像呢?用户文档可以是 16mb - 但如果我允许无限的图像并且与用户相关的所有内容都存储在单个文档中,那么单独的图像可能会比单个文档大吗?

我确定我没有理解对理解 mongodb 至关重要的内容 - 请赐教!

谢谢。

最佳答案

您可以使用 2 个不同的用户和事件集合来设计您的应用。像这样的

UserDocument Collection
-Type
-Details

EventDocument Collection
-Created By
-EventDetail
-AppliedUsers
-"User A",User B"
-AttendingUsers
-"User C",User D"
-FollowingUsers
-"User E",User F"

事件文档使用 Dbref 获取所有已申请、参加和关注用户的用户 ID .

另一种方法是将经常访问的用户文档字段与 DBref 对象一起存储。这避免了对数据库的不必要的命中和在文档中存储冗余(完整的用户数据)数据。像

 EventDocument Collection
-Created By
-EventDetail
-AppliedUsers
-"User"
- Name
- XXX
- DbRef to User A
-AttendingUsers
-"User"
- Name
- XXX
- DbRef to User B

-FollowingUsers
-"User"
- Name
- XXX
- DbRef to User C

-"User"
- Name
- XXX
- DbRef to User D

对于图像,您可以使用 GridFs。这会将大文件分成更小的 block 。

关于mongodb - 基础mongodb理论,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076028/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com