Java Spring-在 MongoDB 中使用投影和过滤器进行聚合操作的启动代码

Java Spring-boot code for aggregate operation with projection and filter in MongoDB

我有一个 Mongo 查询应该转换为 Java Spring-引导代码,

查询

db.orgConfigData.aggregate([
    {"$match" : { "organizationId": 339975}},
    {$project: {
        
domains:{
$filter: {
input: "$domains",
as : "domains",
cond: {$eq: ["$$domains.activeInd", true]}
}
}}
}])

我一开始尝试使用下面的代码,但在如何在 java spring

的投影中添加过滤器时卡住了
MatchOperation matchStage = Aggregation.match(new Criteria("organizationId").is(orgId));
ProjectionOperation projectStage = Aggregation.project(?);

有人可以帮我编写上述查询的代码吗? 提前致谢。

我已经找到了解决办法。 这是解决这个问题的方法。

这是进口商品。

import static org.springframework.data.mongodb.core.aggregation.ComparisonOperators.Eq.valueOf;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.aggregation.ArrayOperators.Filter;
import org.springframework.data.mongodb.core.query.Criteria;
Aggregation aggregation = Aggregation.newAggregation(
                Aggregation.match(new Criteria("organizationId").is(orgId)),
                Aggregation.project("domains")
                        .and(Filter.filter("domains").as("domains").by(valueOf("domains.activeInd").equalToValue(true)))
                        .as("domains")
        );

AggregationResults<outputclass> resultObject = mongoTemplate.aggregate(aggregation, "collection_name",
                outputclass.class);
List<outputclass> resultList=resultObject.getMappedResults();

这仅适用于 mongo模板。 如果您不知道如何配置 mongo 模板,那么这里是

MongoTemplate mongoTemplate= new MongoTemplate(mongoClientObject, dbName);