You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot API无法读取MongoDB中已更新的reviewIds数据求助

问题:Spring Boot MongoDB API中reviewIds更新后GET请求返回为空

我基于Spring Boot开发了一个连接本地MongoDB的API,数据库包含movies和reviews两个集合。API通过GET请求获取movies集合的数据,Movie对象包含一个Review对象列表,在接口响应中该列表以reviewIds字段的形式展示。

调用GET请求时能正常获取所有电影数据;但通过POST请求向指定电影的reviewIds列表插入Review对象后,数据库中已成功显示该列表更新,再次调用GET请求获取电影集合时,API返回的reviewIds仍为空。我尝试用GSON直接输出JSON响应,结果还是空,因此排除了Insomnia、Chrome等客户端工具的问题。

MovieController.java

@RestController
@RequestMapping("/api/movies")
public class MovieController {

    private final MovieService movieService;

    MovieController(MovieService movieService) {
        this.movieService = movieService;
    }

    @GetMapping
    public ResponseEntity<List<Movie>> getAllMovies() {
        return new ResponseEntity<List<Movie>>(movieService.allMovies(), HttpStatus.OK);
    }

    @GetMapping("/{imdbId}")
    public ResponseEntity<Optional<Movie>> getSingleMovie(@PathVariable String imdbId) {
        return new ResponseEntity<Optional<Movie>>(movieService.singleMovie(imdbId), HttpStatus.OK);
    }

}

MovieService.java

@Service
public class MovieService {

    private final MovieRepository movieRepository;

    MovieService(MovieRepository movieRepository) {
        this.movieRepository = movieRepository;
    }

    public List<Movie> allMovies() {
        return movieRepository.findAll();
    }

    public Optional<Movie> singleMovie(String imdbId) {
        return movieRepository.findMovieByImdbId(imdbId);
    }

}

ReviewController.java

@RestController
@RequestMapping("/api/reviews")
public class ReviewController {
    
    @Autowired
    private ReviewService reviewService;

    @PostMapping
    public ResponseEntity<Review> createReview(@RequestBody Map<String, String> payload)
    {
        return new ResponseEntity<Review>(reviewService.createReview(payload.get("reviewBody"), payload.get("imdbId")), HttpStatus.CREATED);
    } 
}

ReviewService.java

@Service
public class ReviewService {

    @Autowired
    private ReviewRepository reviewRepository;

    @Autowired
    private MongoTemplate mongoTemplate;

    public Review createReview(String reviewBody, String imdbId) {
        Review review = reviewRepository.insert(new Review(reviewBody));
        mongoTemplate.update(Movie.class).matching(Criteria.where("imdbId").is(imdbId)).apply(
                new Update().push("reviewIds").value(review)).first();

        return review;
    }

}

更新后的数据库状态

POST请求后reviewIds列表已更新

更新后GET请求的API响应

此处reviewIds列表仍显示为空

内容的提问来源于stack exchange,提问作者Harshal Kansara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 14:13:10