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);
我有一个 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);