我有一个像这样的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;
答案 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);
}