몽고DB는 아무래도 DW 개념으로 접근하는게 좋을 거 같다.
기존에는 키를 가지고 distinct 로 가져와서 다시 while 문을 돌리면서 하나씩 빼오는걸로 되어있다. 참고하길...
만들고자 하는 부분은. 등록일자 , 보고일자 , seq_no 순으로 정렬 하여 가져온후에 seq_no 가 겹치는 경우 distinct 를 java 단에서 처리하기로 했다.
하단 쿼리를 JAVA 로 맹글려고 많은 고생을 했다. --;;
find({ "rpt_stat_cd" : "30"},{ "_id" : 0 , "kids_rpt_no" : 1}).sort({ "rgst_dt" : -1 , "rpt_dt" : -1 , "drgmr_cmp_nm" : 1 , "kids_rpt_no" : -1})
하단은 소스단 (oneCollectionQuery = 조회조건들이 추가된부분이다 : 생략)
BasicDBObject query = new BasicDBObject();
query.append("_id",0);
query.append("kids_rpt_no", 1);
// System.out.println("oneCollectionQuery = "+ oneCollectionQuery);
BasicDBObject orderQuery = new BasicDBObject();
orderQuery.append("rgst_dt", -1);//등록일자
orderQuery.append("rpt_dt", -1);//보고일자
orderQuery.append("drgmr_cmp_nm", 1);//
orderQuery.append("rpt_no", -1);//seq_no
DBCollection coll = dbConnect.getCollection(MongoDbConnect.ICSR);
DBCursor testCursor = coll.find(oneCollectionQuery, query).sort(orderQuery);
int ind = 0;
while(testCursor.hasNext()){
DBObject result = testCursor.next();
//System.out.println(ind+"==gogo"+(String)result.get("kids_rpt_no"));
kids_rpt_no.add((String)result.get("kids_rpt_no"));
ind++;
}
List kidsRptNoListTest = new ArrayList();
for(int ii = 0 ; ii < kids_rpt_no.size(); ii++){
if(!kidsRptNoListTest.contains(kids_rpt_no.get(ii))){
kidsRptNoListTest.add(kids_rpt_no.get(ii));
}
}
'IT 전용글 > MongoDB' 카테고리의 다른 글
MongoDB JAVA Driver (0) | 2014.02.19 |
---|---|
MongoDB 툴 로보몽고 (0) | 2014.02.19 |
MongoDB 셋팅과 php 연동 관련 (0) | 2014.02.18 |
MongoDB 쿼리문들 정리 (0) | 2014.02.18 |
몽고DB설치관련 (0) | 2014.01.31 |