【问题标题】:How to retrieve date in a range Mongodb如何在Mongodb范围内检索日期
【发布时间】:2017-07-20 12:15:10
【问题描述】:

MongoDB 示例数据:

   {
      "couseId": "String",
      "assignmentId": "String",
      "studentId": "String",
      "submissionId": "String",
      "version": "String",
      "grade": "int"
    }

我想检索一个范围内的聚合数据(所有等级在 50-100 之间)。其实我想得到上述年级范围的计数。

我如何使用 java spring mongo 做到这一点。如果有人可以发布代码示例,那就太好了。

更新:

是否可以使用 Spring Aggregation Framework 获取特定范围内的学生人数?

【问题讨论】:

    标签: spring mongodb aggregation-framework spring-mongo


    【解决方案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());
        }
    
    }
    

    【讨论】:

    • 是否可以使用 Spring Aggregation Framework 获取特定范围内的学生人数?
    • 可以,可以,只要返回这个列表的大小,把方法返回类型改成int
    猜你喜欢
    • 2016-01-25
    • 2016-11-19
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    相关资源
    最近更新 更多