자바 작업 mongodb 의 다 중 표 연결 검사 실현($lookup)
전문 은 두 부분 으로 나 뉜 다.
이 곳 에서 사용 하 는 mongodb 의 robo 3t 시각 화 도 구 는 먼저 요 구 를 말 합 니 다.A(로그 표 라면)표 에서 조건 에 맞 는 데 이 터 를 조회 하고 A 표 에서 조건 에 맞 는 데 이 터 를 조회 하여 B(정보 표 라면)표 의 데 이 터 를 조회 합 니 다.여기 서도 B 표 의 조회 조건 을 추가 할 수 있 습 니 다(관계 형 데이터 베이스 에 있 는 임시 표 유형)
mongo 검색 어:
db.getCollection('A').aggregate([
{
$lookup:{
from:'B',
localField:'userid',
foreignField:'userid',
as:'userinfo'
}
},
{
$unwind:'$userrole'// , userrole 10 , $unwind 10 , 10 userrole , ,
},
{
$match:{'username':'zhangsan'}
},
{
$group:{
_id:{
userid:'$userid',// A
userrole:'$userrole.roleid',//A , roleid
},
operateTime:{
$last:'$operateTime'// A
}
info:{
$first:'$userinfo'// , ( userrole ),$first
}
}
},
{
$sort:{'operateTime':-1}// ,-1: ,1:
},
{
$skip:0// ,
},
{
$limit:5//
}
]);
자바 코드 통합 검색 어
//
String[] groupIds = new String[] {"$userid","$userrole.roleid"};
//
Criteria criteria = new Criteria();
// where username = "zhangsan"
criteria.and("username").is("zhangsan");
// where age not in("15","20")
criteria.and("age").nin("15","20");
//in
//criteria.and("").in();
//
Sort sort = new Sort(Direction.DESC,"operateTime");
// ,
Aggregation aggregationCount = Aggregation.newAggregation(
Aggregation.match(criteria);//
Aggregation.group(groupIds);//
);
//
Aggregation newAggregation = Aggregation.newAggregation(
Aggregation.lookup('B','userid','userid','userinfo'),// , , ,
Aggregation.unwind("$userrole"),
Aggregation.match(criteria),
Aggregation.group(groupIds)
.last("$operateTime").as("operateTime")// ,
.first("$userinfo").as("info"),
Aggregation.sort(sort),
Aggregation.skip(pageSize*(pageNumber-1L)),//Long
Aggregation.limit(pageSize)
);
//
AggregationResults<BasicDBObject> aggregate = mongoTemplate.aggregate(
newAggregation ,"A",BasicDBObject.class//A ,
);
int count = mongoTemplate.aggregate(aggregationCount ,"A",BasicDBObject.class).getMappedResults().size();
//
Page<BasicDBObject> pager = new Page<>(aggregate.getMappedResults(),count,pageSize,pageNumber,page*(pageNumber-1));
//
BasicDBObject .....
자바 작업 mongodb 의 다 중 표 연결 검색 의 실현($lookup)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 자바 mongodb 다 중 표 연결 검색 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.