Spring 如何在Mongodb范围内检索日期
MongoDB示例数据:Spring 如何在Mongodb范围内检索日期,spring,mongodb,aggregation-framework,spring-mongo,Spring,Mongodb,Aggregation Framework,Spring Mongo,MongoDB示例数据: { "couseId": "String", "assignmentId": "String", "studentId": "String", "submissionId": "String", "version": "String", "grade": "int" } 我希望检索范围内的聚合数据(所有分数在50-100之间)。实际上我想得到以上等级范围的计数 如何使用JavaSpr
{
"couseId": "String",
"assignmentId": "String",
"studentId": "String",
"submissionId": "String",
"version": "String",
"grade": "int"
}
我希望检索范围内的聚合数据(所有分数在50-100之间)。实际上我想得到以上等级范围的计数
如何使用JavaSpringMongo实现这一点。如果有人能发布一个代码示例,那就太好了
更新:
是否可以使用Spring聚合框架获取特定范围内的学生人数?您可以使用存储库中的
@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
}
@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();
}
@Repository
public interface CourseRepository extends MongoRepository<Course, String> {}
@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());
}
}
CourseRepository.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
}
@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();
}
@Repository
public interface CourseRepository extends MongoRepository<Course, String> {}
@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());
}
}
@存储库
公共接口CourseRepository扩展了MongoRepository{
//只需输入一个JSON,就像MongoDB查询一样
@查询(“{grade:{$gte:50,$lte:100}”)
列表findInGradeRange();
}
我希望有帮助
编辑
但是,如果要动态设置范围(例如20-50),可以这样做
CourseRepository.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
}
@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();
}
@Repository
public interface CourseRepository extends MongoRepository<Course, String> {}
@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());
}
}
@存储库
公共接口CourseRepository扩展了MongoRespository{}
CourseService.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
}
@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();
}
@Repository
public interface CourseRepository extends MongoRepository<Course, String> {}
@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());
}
}
@服务
公共课程服务{
@自动连线
私塾教育学院;
公共列表findByRange(最小整数,最大整数){
return courseRepository.findAll().stream()
.filter(c->c.getGrade()>=min&&c.getGrade()是否可以使用Spring聚合框架获取特定范围内的学生人数?是的,您可以这样做,只需返回此列表的大小,并将方法返回类型更改为int