2017-07-20 41 views
1

MongoDB的樣本數據:如何在範圍內檢索日期MongoDB的

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

我想要檢索的範圍彙總數據(在50-100之間所有等級)。其實我想獲得上述等級範圍的計數。

如何使用java spring mongo做到這一點。如果有人可以發佈代碼示例,那將會很棒。

更新:

是否有可能獲得使用Spring框架聚集在特定範圍內有多少個學生?

回答

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()); 
    } 

} 
+0

是否有可能獲得使用Spring框架聚集在特定範圍內有多少個學生? – mars

+0

是的,你可以做到這一點,只要返回這個列表的大小,並將方法返回類型更改爲「int」 – riverside256

相關問題