首页 > 解决方案 > 在哪个集合中放置有关平均评分的数据?

问题描述

目前,我正在开发一个健身应用程序。我有用户锻炼,它们存储在两个不同的集合中。

在用户文档中,我有一个包含已完成锻炼的数组,其中仅包含锻炼 ID 和这次经过的秒数。

一个新的用例可能是,每个用户都可以在完成锻炼后对锻炼进行评分。

我的问题是:在哪里存储这个评级信息?

现在的用例是:

目前,我的方法是将其存储在两个地方。首先,我在用户文档中存储一个用户对一次锻炼的个人评分。其次,我在锻炼文档中有一个名为avgRating的键。每次用户对锻炼进行评分时,我都会将个人评分存储在他的用户文档中,并通过 重新计算锻炼的平均评分newAvgRating=(oldAvgRating+userRating)/2

这是正确的方法还是有更好的方法?

我团队中的另一位工程师建议创建一个新集合,在其中存储哪个用户对哪个锻炼的评分值进行评分,然后按需计算平均评分,并将其简单地缓存在后端以获得更好的性能。但我认为这不是“类似 MongoDB 的”。您如何看待这种方法?

标签: mongodbnosql

解决方案


推荐阅读