MongoDB示例数据:
{
"couseId": "String",
"assignmentId": "String",
"studentId": "String",
"submissionId": "String",
"version": "String",
"grade": "int"
}
我想检索范围内的汇总数据(所有等级在50-100之间)。实际上我想得到上述等级范围的计数。
如何使用java spring mongo执行此操作。如果有人可以发布代码示例,那就太好了。
更新
使用Spring Aggregation Framework可以获得特定范围内有多少学生吗?
答案 0 :(得分:1)
您可以在存储库中使用@Query
注释执行此操作。这是一个例子。
<强> Course.java 强>
@Document(collection = "courses")
public class Course {
@Id
private String courseId;
private String assignmentId;
private String studentId;
private String submissionId;
private String version;
@Indexed
private int grade;
//constructor and getters and setters
}
<强> CourseRepository.java 强>
@Repository
public interface CourseRepository extends MongoRepository<Couse, String> {
// just put an JSON, just like MongoDB query
@Query("{grade: {$gte: 50, $lte: 100}}")
List<Course> findInGradeRange();
}
我希望它有所帮助。
修改强>
但是,如果你想动态设置范围(例如20-50),你可以这样做。
<强> CourseRepository.java 强>
@Repository
public interface CourseRepository extends MongoRepository<Course, String> {}
<强> CourseService.java 强>
@Service
public class CourseService {
@Autowired
private CourseRepository couseRepository;
public List<Course> findByRange(int min, int max) {
return courseRepository.findAll().stream()
.filter(c -> c.getGrade() >= min && c.getGrade() <= max)
.collect(Collectors.toList());
}
}