MongoDB에서 내부 쿼리의 개념이 없으므로 기본적으로 2 개의 쿼리로 구현할 수 있지만 이미 알고 있고 '더 나은'솔루션을 원할 것입니다. 이 가능한지 물어봤을 때이라고 생각 했으므로 까다로울 수 있지만 집계로 달성 할 수 있다고 생각합니다.
db.feedback.aggregate([
{$project : {
'outletId' : 1,
'feedback._id' : '$_id',
'feedback.createdOn' : '$createdOn',
'feedback.a' : '$a'
}},
{$group : {
_id : $outletId,
feedbacks : {$addToSet : '$feedback'}
}},
{$match : {
'feedbacks.createdOn' : {
$gte : ISODate('2013-05-03')}
}},
{$unwind : '$feedback'}]);
끝에 $ 프로젝트 단계를 하나 더 추가하여 자식 개체를 문서의 값으로 설정할 수 있습니다. 내가
먼저 우리는 피드백라는 아이 필드 내에서 필요한 모든 필드를 가하고있는 문서를 프로젝트, 꽤 보이지 않는,하지만 난 그것을 단계적으로 설명 할 알고 두 번째 단계에서
우리는 그것을 분류 outletId에 의해 모든 자식 피드백을 feedbacks라는 배열에 넣습니다 (각 outletid에 대해 모든 피드백을받습니다). 그 outletIds가 필터링 한 후 세 번째 단계에서
우리는 우리가 서로 아이를 얻기 위해 긴장을 풀고 호출 createdOn 필드에 설정된 날짜보다 큰 배열에서 단 한 번의 피드백이없는 경우
, 필터링 $ 일치를 사용 피드백 배열을 하나의 문서로 만듭니다.
이제 우리는 mongoTemplate에 대해 이야기 할 때, 그렇습니다. 첫 번째 단계에서 의견의 중첩을 포함하여 집합에 대한 모든 매개 변수를 허용합니다. 당신이 있음에 작동하지 않습니다 대신에 타임 스탬프 또는 ISODate도 정상 몽고 쿼리 문자열로 createdOn 필드를 저장하는 경우 단지 TypedAggregation
의 몇 가지 예를 보려면 당신은 당신의 포스트 그레스 예에서의 작업으로 범위를 찾을 필요가있을 때 .
희망이 있습니다.
피드백이 'feedback * from select * from feedback.createdOn> ='2013-05-03 ':: date'와 다른 점은 어떻게 하나의 테이블'feedback'에서 쿼리하는 것입니까? – chridam
쿼리는 주어진 시간 이후에 생성 된 피드백을 반환합니다. 내가 원했던 것은 주어진 시간 이후에 최소한 하나의 피드백이 생성 된 모든 피드백 (주어진 시간 이전에 만들어진 경우에도)이었습니다. –