IT 전용글/MongoDB

MongoDB 정렬 및 java distinct 관련

회상형인간 2014. 2. 17. 09:57

 

몽고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