我有一個應該轉換為 Java Spring-boot 代碼的 Mongo 查詢,
詢問
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(?);
有人可以幫我提供上述查詢的代碼嗎?提前致謝。
uj5u.com熱心網友回復:
我已經找到了解決方案。這是解決此問題的方法。
這里是進口。
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();
這僅適用于 mongoTemplate。如果您不知道如何配置 mongo 模板,那么這里就是
MongoTemplate mongoTemplate= new MongoTemplate(mongoClientObject, dbName);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/414148.html
標籤:
下一篇:MongoDB$查找物件陣列
