问题描述
我有一种情况,我将参数传递给MongoDB中的集合,并仅获取与我的条件匹配的特定数组对象 serviceType “ serviceType” =修复与修复
收藏样本
"serviceTypes": [
{
"serviceType": "Installation/Uninstallation Service",},{
"serviceType": "Repairs & Fixes",{
"serviceType": "Electricity Breakdown",{
"serviceType": "Electricity Wiring",}
]
按照下面的实现,它将获取所有数组对象而不是特定的数组对象。上面的收集示例是下面的代码的实际响应。
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.mapping.Field;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
@Override
public ServiceList findOneByServiceType(String categoryName,String
serviceType1) {
// Todo Auto-generated method stub
Query query = new Query() ;
query.addCriteria(Criteria.where("categoryName").is(categoryName).andOperator(Criteria.where("serviceTypes").elemmatch(Criteria.where("serviceType").is(serviceType1))));
query.fields().include("serviceTypes.serviceType");
return (ServiceList) mongoTemplate.findOne(query,ServiceList.class);
}
如何使用mongotemplate和Spring boot Mongo的Query api处理这种情况?
解决方法
您只需要替换此行
query.fields().include("serviceTypes.serviceType");
在下面一行
query.fields().include("serviceTypes").position("serviceTypes",1);