Как получить дату в диапазоне Mongodb

Пример данных MongoDB:

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

Я хочу получить совокупные данные в диапазоне (все оценки от 50 до 100). На самом деле я хочу подсчитать вышеуказанный диапазон оценок.

Как это сделать с помощью java spring mongo. Было бы здорово, если бы кто-нибудь мог опубликовать пример кода.

Обновление:

Можно ли узнать, сколько студентов в определенном диапазоне, используя Spring Aggregation Framework?


person Manoj Masakorala    schedule 20.07.2017    source источник


Ответы (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());
    }

}
person t.piwowarczyk    schedule 20.07.2017
comment
Можно ли узнать, сколько студентов в определенном диапазоне, используя Spring Aggregation Framework? - person Manoj Masakorala; 21.07.2017
comment
Да, вы можете это сделать, просто верните размер этого списка и измените тип возвращаемого метода на int - person t.piwowarczyk; 21.07.2017