2014-03-13 5 views
0

mongodb의 내부 문서에서 필드를 가져 오는 방법은 무엇입니까 ?? 예를 들어 "idMovie"라는 필드를 주면이 idMovie에 해당하는 나머지 필드를 얻을 수 있습니다. 내가 콘솔 인쇄를 실행할 때mongodb의 내부 문서의 배열에서 값 가져 오기

 MongoClient mongo = null; 
     DBCursor cursor = null; 
     String average = ""; 
     String sum = ""; 
     String numCal = ""; 

     try { 
      mongo = new MongoClient ("localhost", 27017); 
      DB db = mongo.getDB("DBHC2"); 

      DBCollection movieDocument = db.getCollection("movies"); 
      BasicDBObject searchQuery = new BasicDBObject(); 
      searchQuery.put("rateMovies.idMovie", idMovie); 
      cursor = movieDocument.find(searchQuery); 

      if(cursor.hasNext()){ 

       average = searchQuery.getString("average"); 
       sum  = searchQuery.getString("sum"); 
       numCal = searchQuery.getString("total"); 

       System.out.println("***** Debug: average: "+average+" sum: "+sum+" total: "+numCal);  
      }   
     } 
     catch(Exception e){ 
      System.out.println("error : " + e.getMessage()); 
      System.out.println("error : " + e.getCause()); 
     } 
     finally{ 
      cursor.close(); 
     } 
    } 

:

{ "_id" : { "$oid" : "5320aa3c3e468eaeb52dccdc"}, 
    "document" : "movies" , 
    "rateMovies" : [ 
     { 
     "idMovie" : 2 , 
     "average" : "0" , 
     "sum" : "0" , 
     "total" : "0" 
     } , 

     { 
     "idMovie" : 3 , 
     "average" : "0" , 
     "sum" : "0" , 
     "total" : "0" 
     }] 
    } 
:

***** Debug: average: null sum: null total: null 

이 내가 사용하고있어 MongoDB의 문서가

이 코드를 사용하고 있습니다

미리 감사드립니다 !! :) 나의 영어에 대해 유감스럽게 생각한다.

답변

1

DBObject가 커서를 통해 반환하는 대신 전달하는 쿼리 개체에서 데이터를 추출하려고합니다.

+0

내가 성공하지 않고,이 작업을 수행하기 위해 노력하고있어 :'경우 (cursor.hasNext()) { \t \t \t \t \t \t \t \t DBOBJECT resultElement = cursor.next(); \t \t \t \t 평균 = (문자열) resultElement.get ("평균"); \t \t \t \t id = (String) resultElement.get ("idMovie"); \t \t \t \t sum = (String) resultElement.get ("sum"); \t \t \t \t numCal = (문자열) resultElement.get ("전체");'당신이 좋아하는 뭔가를해야 – HCarrasko

+0

: DBOBJECT resultElement = cursor.next(); 목록 목록 = (목록 ) resultElement.get ("rateMovies"); //이 목록을 반복하여 평균을 잡으십시오. – evanchooly

+0

나는 고맙습니다. – HCarrasko