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