2011-01-28 9 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を使用できます。あなたのアプローチに悩まされていなければ、ショートカットはありません。

関連する問題