조건부 쿼리를 사용하고 싶습니다. 여기 봄 mongotemplate 조건부 쿼리
내 자바 코드DBObject groupByIECode = new BasicDBObject("$group",
new BasicDBObject("_id", new BasicDBObject("iecode","$iecode")).append("treatmentArms",new BasicDBObject("$first","$evaluationDTOList")));
System.out.println("groupByIECode: "+groupByIECode.toString());
DBObject unwind = new BasicDBObject("$unwind","$treatmentArms");
System.out.println("unwind: "+unwind.toString());
DBObject finalCalculation = new BasicDBObject("$group",new BasicDBObject("_id",null))
.append(
"Package", new BasicDBObject(
"$sum", new BasicDBObject(
"$cond", new Object[]{
new BasicDBObject(
"$eq", new Object[]{ "$treatmentArms.mechanismOrPkg", "Package"}
),
1,
0
}
)
)
);
System.out.println("finalCalculation: "+finalCalculation);
final AggregationOutput output = projects.aggregate(match,groupByIECode,unwind,finalCalculation);
그것은 나중에 내가 $cond
운영자가 지원되지 않는다는 것을 발견 MongoException$DuplicateKey
나에게주는 여기 내 쿼리
db.projects.aggregate([
{
"$group": {
"_id": "$iecode",
"treatmentArms": { "$first": "$evaluationDTOList" }
}
},
{ "$unwind": "$treatmentArms" },
{
"$group": {
"_id": null,
"Package": {
"$sum": {
"$cond": [
{ "$eq": [ "$treatmentArms.mechanismOrPkg", "Package" ] },
1, 0
]
}
},
"Constraint-relaxing mechanisms": {
"$sum": {
"$cond": [
{
"$and": [
{ "$eq": [ "$treatmentArms.mechanismOrPkg", "Mechanism" ] },
{ "$eq": [ "$treatmentArms.mechanismTested1", "Constraint-relaxing mechanisms" ] }
]
},
1,
0 ]
}
},
"Delivery mechanisms": {
"$sum": {
"$cond": [
{
"$and": [
{ "$eq": [ "$treatmentArms.mechanismOrPkg", "Mechanism" ] },
{ "$eq": [ "$treatmentArms.mechanismTested1", "Delivery mechanisms" ] }
]
},
1,
0 ]
}
},
"Other": {
"$sum": {
"$cond": [
{
"$and": [
{ "$eq": [ "$treatmentArms.mechanismOrPkg", "Mechanism" ] },
{ "$eq": [ "$treatmentArms.mechanismTested1", "Other" ] }
]
},
1,
0 ]
}
}
}
}
])
입니다 spring mongotemplate
. 그렇다면이 조건부 쿼리를 spring mongotemplate
으로 구현하려면 어떻게해야합니까?
This 링크는 몇 가지 설명이 있지만 그것은 다음과 같이 보인다 MongoDB를 집계 프레임 워크를위한 Spring 데이터 MongoDB의 지원을 사용하여 들어, documentation에서 정규 예를 완전한 이행
내가'Aggregation' 개체에서'DBObject'를 얻을 수 있습니다. 사실 나는 클래스 (엔티티)가 아니 었습니다. –
내 쿼리를 실행하려는 컬렉션 이름은 어디에 지정해야합니까? –
@HalfBloodPrince [documentation] (http://docs.spring.io/spring-data/mongodb/docs/current/reference/html/#mongo.aggregation.basic-home.html)의 표준 예제를 사용하여 내 대답을 업데이트했습니다. 개념) 내가 당신을 통해 격려 것이 좋습니다. – chridam