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

如何通过SpringBoot从MongoDB中仅获取ObjectID列表?

直接返回ObjectID列表的实现方式

你可以直接修改方法的返回类型为List<ObjectId>,同时调整@Query的投影配置,Spring Data MongoDB会自动将查询到的文档ID映射为ObjectID对象,无需通过String中转。

修改后的代码

@Query(value="{ 'studentsList.$id': ?0 }", fields="{'_id': 1}")
List<ObjectId> findAllByStudentID(ObjectId studentId);

关键说明

  • 替换返回类型:把List<Subject>改为List<ObjectId>,Spring Data会自动处理_id字段到ObjectID的映射。
  • 修正投影字段:投影时使用_id(MongoDB文档ID的默认字段名),而非原代码中的$id,$id仅用于查询子文档ID的匹配逻辑,投影时直接指定_id即可。

更简洁的替代方案(无需@Query)

如果使用的是Spring Data MongoDB 2.x及以上版本,还可以通过方法命名规则实现,无需手动编写查询语句:

List<ObjectId> findByStudentsListId(ObjectId studentId);

Spring Data会自动解析方法名,生成匹配studentsList.id的查询,并直接返回ObjectID列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 21:22:40