Java Spring Boot从MongoDB计算平均评分结果不符问题排查
Java项目MongoDB电影平均评分计算结果不符问题排查
我正在开发基于Java的项目,需从MongoDB的ReviewSummary文档计算电影平均评分,但计算结果(1.309375)与预期值(3.325)严重不符,请求协助定位问题。
相关信息
1. MongoDB ReviewSummary文档示例
{ "movieId": "movie_001", "totalReviews": 40, "sumOfScores": 133, "reviewDetails": [{"score":3}, {"score":4}, ...] }
2. Java计算逻辑代码
// 当前使用的评分计算方法 public double getAverageRating(ReviewSummary reviewSummary) { if (reviewSummary.getTotalReviews() == 0) { return 0.0; } // 此处为当前计算逻辑 return (double) reviewSummary.getSumOfScores() / reviewSummary.getTotalReviews(); }
3. Postman返回的电影数据示例
{ "movieId": "movie_001", "title": "Test Movie", "averageRating": 1.309375, "totalReviews": 40 }
可能的问题排查点
- 数据准确性核查:确认
ReviewSummary中的sumOfScores和totalReviews是否正确。比如是否sum值被错误存储为实际总和的1/2.5,或者totalReviews统计了未提交评分的无效记录 - Java类型转换问题:检查计算时是否存在整数除法截断。比如如果
sumOfScores和totalReviews都是int类型,是否在计算前正确将其中一个转为double(如(double) sum / total而非sum / total后转double) - 逻辑额外处理:排查代码中是否存在未注意到的权重系数、过滤规则。比如是否误将评分按0-1区间缩放后未还原,或者过滤了高于3分的评分记录
- MongoDB聚合错误:如果
ReviewSummary是通过MongoDB聚合生成的,检查聚合管道是否正确累加评分、统计有效评论数。比如是否用了$count而非$sum统计数量,或者评分字段取错
内容的提问来源于stack exchange,提问作者ABAB
相关产品推荐
相关产品推荐

