我正在构建一个电子学习应用程序,并将学生活动显示为时间线,我应该将它们嵌入到user
集合中,还是使用userId
.
约束:
- 一对多的关系。
- 用户活动详细且数量众多
- 在 90% 的情况下,我们一次只需要查看一个用户,另一种情况是主管(老师)需要查看用户活动的摘要(可能是另一个集合?)
- 搜索活动和找学生的用例我还没想过,也许我以后会有这个用处?(例如,看看谁先完成了某些特定活动?但这会将关系更改为多对多,这是一个完全不同的问题)
我在这两个问题中找到了相关问题的不同模式:
- MongoDB架构设计——选择两种收集方式或嵌入文档推荐
try and embed as much as possible
- 用于存储用户位置历史提醒的 MongoDB 模式
don't bloat a collection, because querying the elements deep below might be hard, especially if you're going to use lists