如何处理 MongoDB 中频繁读取的大型文档的大量更改?

How to handle mass changes to a large document with frequent reads in MongoDB?

假设我在 MongoDB 中有以下格式的文档:

students: Array
grades: Array

我目前有大约 10,000 名学生和不断变化的成绩。学生人数不断增长,学生从文档中删除。我有一个每 30 分钟更新一次文档的过程。同时,我构建了一个 ExpressJS API,不同的老师每分钟查询数据库以查看他们学生的信息。

  1. 更新数据的最佳方式是什么?由于添加、删除学生和更改成绩的可能性如此之大,我是否应该每 30 分钟覆盖一次文档?数据集总体大小只有几 MB。
  2. 如果我碰巧在他们发出 GET 请求的同时进行更新,我如何确保他们不会停机?
  1. 如果您有太多更改,最好一次性覆盖所有更改,而不是每次都针对任何单个学生更改更新文档。
  2. 老师们没有休息时间,他们只会阅读以前的文件,更改后他们会阅读新文件。

有这么多(10k students/grades - 数组中的元素),如果集合中每个 student/grade 有一个文档可能更好,因此您只更新相关的学生文档。

你需要根据用例调整模式,我想不是每次老师都需要阅读 students/grades 的完整列表,而是每个 class 或课程或学校的学生,在这里猜测,因为我没有看到您的确切用例和文档示例...