Spring 如何在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

MongoDB示例数据:

   {
      "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