2017-07-20 9 views
1

MongoDBのサンプルデータを日付を取得する方法:範囲でMongoDBの

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

私は集計範囲のデータ(50〜100の間のすべてのグレード)を取得したいです。実際に私は上記の学年の範囲のカウントを取得したい。

どのように私はこれをjava 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(); 
} 

私はそれが役に立てば幸い。

EDIT

しかし、あなたは(例えば、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

それは春の集約フレームワークを使用して、特定の範囲内でどのように多くの学生があります取得することはできますか? – mars

+0

はい、あなたはそれを行い、このリストのサイズを返し、メソッドの戻り値の型を 'int'に変更するだけです – riverside256