임베디드 mongo 문서로 작업 할 때 배열을 풀려고하지만 org.springframework.data.mapping.model.MappingInstantiationException 같은 예외가 발생합니다. java.util을 인스턴스화하지 못했습니다. 인수와 함께 생성자 NO_CONSTRUCTOR를 사용하여 .List. 당신의 집계 결과이집계 쿼리에서 Mongo db java unwind 작업
AggregationResults<Logs> results = mongoOps.aggregate(agg, "logs", Logs.class);
같은 로그 오브젝트의 목록 후받는 사람의 기수가 잘못 인 경우 I가 쓴 쿼리,
Aggregation agg = newAggregation(
unwind("recipients"),
match(Criteria.where("recipients.userId").is("800").andOperator(Criteria.where("recipients.status").is(false)
)));
Logs.java
private String id;
private String userId;
private String conversationId;
private Date createdDate;
private List<Recipients> recipients;
Recipients.java
private String userId;
private boolean status;
데이터
{
"_id" : ObjectId("579099e6000fda45000c0054"),
"userId" : "800",
"conversationId" : "57907e5f000fda45000c004b",
"createdDate" : ISODate("2016-07-21T09:46:14.602Z"),
"recipients" : [
{
"userId" : "800",
"status" : false
},
{
"userId" : "900",
"status" : false
}
]
}
{
"_id" : ObjectId("579099e9000fda45000c0055"),
"userId" : "530a7998-ba3f-4366-8d21-bb1ca688cfdb",
"conversationId" : "57907e5f000fda45000c004b",
"createdDate" : ISODate("2016-07-21T09:46:17.915Z"),
"recipients" : [
{
"userId" : "800",
"status" : true
},
{
"userId" : "900",
"status" : false
}
]
}
{
"_id" : ObjectId("5790adda000fda2444d6ccdf"),
"userId" : "530a7998-ba3f-4366-8d21-bb1ca688cfdb",
"conversationId" : "578df6cf000fda2640b77c45",
"createdDate" : ISODate("2016-07-21T11:11:22.522Z"),
"recipients" : [
{
"userId" : "800",
"status" : false
},
{
"userId" : "530a7998-ba3f-4366-8d21-bb1ca688cfdb",
"status" : true
}
]
}
{
"_id" : ObjectId("5790adde000fda2444d6cce0"),
"userId" : "530a7998-ba3f-4366-8d21-bb1ca688cfdb",
"conversationId" : "578df6cf000fda2640b77c45",
"createdDate" : ISODate("2016-07-21T11:11:26.479Z"),
"recipients" : [
{
"userId" : "800",
"status" : false
},
{
"userId" : "530a7998-ba3f-4366-8d21-bb1ca688cfdb",
"status" : true
}
]
}
집계 메소드를 호출하는 코드를 작성할 수 있습니까? –
@Andriy Simonov : 다른 클래스에서 호출 중입니다. 집계 함수가 한 메서드에 있는데, 동적 사용자 프로필 ID를 사용하여 해당 메서드를 호출합니다. 그러나 여기에 사용자 프로필 ID를 800으로 하드 코드했습니다. – Karthik