2011-01-28 7 views
3

컬렉션의 문서에 대한 객체 그래프를 만들어야합니다. 모든 키 - 값 쌍을 가져올 수 있습니다. 다음은이를 수행하는 코드입니다.Java 드라이버를 사용하여 mongo db에서 중첩 문서 얻기

import com.mongodb.*; 
import java.util.*; 

public class GetKeyValuePair { 
public static void print(DBObject doc) { 
    Set<String> allKeys = doc.keySet(); 
    Iterator<String> it = allKeys.iterator(); 
    while (it.hasNext()) { 
     String temp = it.next(); 
     System.out.print(temp + "-"); 
     if (doc.get(temp) instanceof BasicDBObject) { 
      System.out.println("\n"); 
      print((DBObject) doc.get(temp)); 
     } else { 
      System.out.println(doc.get(temp)); 
     } 
    } 

} 

public static void main(String args[]) { 
    try { 
     Mongo m = new Mongo(); 
     DB db = m.getDB("test"); 
     Set<String> colls = db.getCollectionNames(); 
     DBCollection coll = db.getCollection("first"); 

     DBObject doc = new BasicDBObject(); 
     DBCursor cur = coll.find(); 
     Set<String> allKeys; 
     Iterator<String> it; 
     while (cur.hasNext()) { 
      doc = cur.next(); 
      allKeys = doc.keySet(); 
      it = allKeys.iterator(); 
      print(doc); 
      System.out.println("-------"); 
     } 

    } catch (UnknownHostException e) { 
     System.out.println(e.toString()); 
    } catch (MongoException.DuplicateKey e) { 
     System.out.println("Exception Caught" + e); 
    } 
    }} 

내가 할 수있는 다른 방법이 있습니다. 오히려 간단한 방법입니다. 미리 감사드립니다.

+1

나는 문제가 무엇인지 그리고 무엇을하려고하는지 더 잘 설명해야한다고 생각합니다. – Theo

+1

게시 된 코드를 다시 고려하고 싶습니까? 아니면 접근법 전체에 의문을 제기하고 있습니까? –

+0

@Tim 전적으로 새로운 접근 방식을 요구하고있었습니다. –

답변

0

유스 케이스가 허용하고 Morphia와 같은 기존 Java ORM 매퍼가 작동하지 않으면 ReflectionDBObject를 사용할 수 있습니다. 접근 방식에 얽매이지 않는다면 바로 가기가 없습니다.

관련 문제