从 Java Spring boot Rest api 计算平均评分的差异

问题描述 投票:0回答:0

我正在做一个项目,我需要使用 Java 计算 MongoDB 数据的平均评分。但是,我遇到了一个问题,即计算出的平均值与预期结果不符。我已经检查了代码和数据,但我无法确定差异的原因。 我从计算中获得的平均评分是 1.309375 但是,根据提供的值,如果我没有忘记如何对结果进行平均,我预计平均评分为 3.325。

这是mongodb review summary中的文档

这是我使用的代码:

 public Page<Movie> allMovies(Pageable pageable) throws Exception {
        Page<Movie> movies = movieRepository.findAll(pageable);
        List<ReviewSummary> reviewSummaries = reviewSummaryRepository.findAll();
        int numRatings = reviewSummaries.size(); // Moved this line outside the loop
        Map<String, Double> avgRatings = new HashMap<>();

        for (ReviewSummary reviewSummary : reviewSummaries) {
            String imdbId = reviewSummary.getMovieImdbId();
            double rating = reviewSummary.getRating();

            if (!avgRatings.containsKey(imdbId)) {
                avgRatings.put(imdbId, rating);
            } else {
                double totalRating = avgRatings.get(imdbId) + rating;
                double avgRating = totalRating / numRatings; // Changed reviewSummaries.size() to numRatings

                avgRatings.put(imdbId, avgRating);
            }
        }

        for (Movie movie : movies) {
            String imdbId = movie.getImdbId();
            if (avgRatings.containsKey(imdbId)) {
                double avgRating = avgRatings.get(imdbId);
                movie.setAvgRating(avgRating);
            } else {
                movie.setAvgRating(0.0);
            }
        }

        return movies;

    }

这是我在邮递员收到的电影请求中得到的

"imdbId": "tt8760708",
            "title": "M3GAN",
            "releaseDate": "2023-01-06",
            "trailerLink": "https://www.youtube.com/watch?v=BRb4U99OU80",
            "poster": "https://image.tmdb.org/t/p/w500/xBl5AGw7HXZcv1nNXPlzGgO4Cfo.jpg",
            "genres": [
                "Science Fiction",
                "Horror",
                "Comedy"
            ],
            "backdrops": [
                "https://image.tmdb.org/t/p/original/5kAGbi9MFAobQTVfK4kWPnIfnP0.jpg",
                "https://image.tmdb.org/t/p/original/dlxzUj7z1MqEcFiwvvrj0bvBKDY.jpg",
                "https://image.tmdb.org/t/p/original/q2fY4kMXKoGv4CQf310MCxpXlRI.jpg",
                "https://image.tmdb.org/t/p/original/pTxwFdsdDWzpCRYuk1QbggdaOlL.jpg",
                "https://image.tmdb.org/t/p/original/1zuz2RgFoOjulkjjNHHFc3WiHGB.jpg",
                "https://image.tmdb.org/t/p/original/7HqxI1IXMloT9VTSuDC8ikaj810.jpg",
                "https://image.tmdb.org/t/p/original/vpK2rp3J5LiC01HoNM0j9DEHQ1T.jpg",
                "https://image.tmdb.org/t/p/original/cNHXdmr4amP6EPCMa0dqD8rwzDV.jpg",
                "https://image.tmdb.org/t/p/original/txQLFd6rfQrskQhFENkS1jElptt.jpg",
                "https://image.tmdb.org/t/p/original/dC4tj1ONdlZ2TWv4XD2SA1KUnJN.jpg"
            ],
            "reviewIds": [
                {
                    "id": {
                        "timestamp": 1683393168,
                        "date": "2023-05-06T17:12:48.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "rating": {
                        "id": {
                            "timestamp": 1683393168,
                            "date": "2023-05-06T17:12:48.000+00:00"
                        },
                        "userEmail": "[email protected]",
                        "movieImdbId": "tt8760708",
                        "value": 3.5
                    },
                    "body": "Seem a bit meh "
                },
                {
                    "id": {
                        "timestamp": 1683393413,
                        "date": "2023-05-06T17:16:53.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "rating": {
                        "id": {
                            "timestamp": 1683393413,
                            "date": "2023-05-06T17:16:53.000+00:00"
                        },
                        "userEmail": "[email protected]",
                        "movieImdbId": "tt8760708",
                        "value": 3.5
                    },
                    "body": "Seem a bit meh "
                },
                {
                    "id": {
                        "timestamp": 1683393446,
                        "date": "2023-05-06T17:17:26.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "rating": {
                        "id": {
                            "timestamp": 1683393446,
                            "date": "2023-05-06T17:17:26.000+00:00"
                        },
                        "userEmail": "[email protected]",
                        "movieImdbId": "tt8760708",
                        "value": 2.0
                    },
                    "body": "good enough "
                },
                {
                    "id": {
                        "timestamp": 1683393489,
                        "date": "2023-05-06T17:18:09.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "rating": {
                        "id": {
                            "timestamp": 1683393489,
                            "date": "2023-05-06T17:18:09.000+00:00"
                        },
                        "userEmail": "[email protected]",
                        "movieImdbId": "tt8760708",
                        "value": 4.3
                    },
                    "body": "very good"
                }
            ],
            "ratings": [
                {
                    "id": {
                        "timestamp": 1683393168,
                        "date": "2023-05-06T17:12:48.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "value": 3.5
                },
                {
                    "id": {
                        "timestamp": 1683393413,
                        "date": "2023-05-06T17:16:53.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "value": 3.5
                },
                {
                    "id": {
                        "timestamp": 1683393446,
                        "date": "2023-05-06T17:17:26.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "value": 2.0
                },
                {
                    "id": {
                        "timestamp": 1683393489,
                        "date": "2023-05-06T17:18:09.000+00:00"
                    },
                    "userEmail": "[email protected]",
                    "movieImdbId": "tt8760708",
                    "value": 4.3
                }
            ],
 ----> here is the issue     "avgRating": 1.309375,
            "predictedRating": 0.0,
            "similarity": 0.0


java mongodb spring-boot average
© www.soinside.com 2019 - 2024. All rights reserved.