查询mongodb中的过滤数据

时间:2015-01-13 14:24:42

标签: java mongodb

我有一个像这样的mongo db集合数据集。

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

在我的 java 代码中,我需要使用给定的 couseCallNo 检索此整个对象。例如,如果我有'SCPI'作为课程,我就不需要获得确切的上述对象。请帮帮我。

到目前为止,我所做的是

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

testRepository是

MongodbEntityRepository<Course> testRepository; 

1 个答案:

答案 0 :(得分:1)

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

  

$ elemMatch运算符匹配包含的集合中的文档   一个数组字段,其中至少有一个元素匹配所有元素   指定的查询条件。

来源: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); 
 }