Java 使用MongoTemplate和查询API从可用数组对象列表中仅获取匹配的数组对象

Java 使用MongoTemplate和查询API从可用数组对象列表中仅获取匹配的数组对象,java,arrays,mongodb,spring-data-mongodb,Java,Arrays,Mongodb,Spring Data Mongodb,我有一个场景,我将一个参数传递给MongoDB中的一个集合,然后只获取与我的条件“serviceType”=修复和修复匹配的特定数组对象serviceType 采集样本 "serviceTypes": [ { "serviceType": "Installation/Uninstallation Service", }, { "se

我有一个场景,我将一个参数传递给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);
}

如何使用Spring boot Mongo的mongotemplate和查询api处理这种情况?

您只需替换这一行即可

query.fields().include("serviceTypes.serviceType");
用下线

query.fields().include("serviceTypes").position("serviceTypes",1);

你试过在投影中使用elemMatch吗?没有。我是mongoDb的新手,所以通过java进行查询。如果可能的话,请给我指路