查询 mongo db 中的过滤数据

Query filtering data in mongo db

我有一个像这样的 mongo 数据库收集数据集。

{
    "referenceId" : NumberLong(123),   
    "title" : "Title 1",
    "couseCallNo" : "[SCPI, BICO , HSJI]"
}

在我的 java 代码中,我需要使用给定的 couseCallNo 检索 整个对象 。例如,如果我有 'SCPI' 作为 coursecallNo,我需要得到上面的对象。请帮帮我。

到目前为止我所做的是

    QueryFilter filter = new QueryFilter();
    filter.addCriteria(Constants.Card.COURSE_CALL_NO,FilterOperator.EQUALS, courseCallNo);
    List<Course>  courseList =testRepository.find(filter);

    if(courseList != null && courseList.size()>0){
                    course =courseList.get(0);        

测试存储库是

MongodbEntityRepository<Course> testRepository; 

您需要使用 FilterOperator.ELEMENT_MATCH 来搜索子数组的元素,如 MongoDB 文档所述:

The $elemMatch operator matches documents in a collection that contain an array field with at least one element that matches all the specified query criteria.

来源:http://docs.mongodb.org/manual/reference/operator/query/elemMatch/

您的代码应如下所示:

 QueryFilter filter = new QueryFilter();
 filter.addCriteria(Constants.Card.COURSE_CALL_NO, FilterOperator.ELEMENT_MATCH, courseCallNo);
 List<Course>  courseList =testRepository.find(filter);

 if(courseList != null && courseList.size()>0){
     course =courseList.get(0); 
 }