2016-04-08 35 views
0

私はMongoDBを新しく終了しました。 私は内部に少数の書類があるコレクションを持っています。以下はその例です。MongoDBからデータを読み込む

{"UserID": "1", "Name": "John", "Marks":40} 
{"UserID": "2", "Name": "Mark", "Marks":50} 
{"UserID": "3", "Name": "Jesse", "Marks":60} 

すべてのエントリのマークを表示して、それらを表示し、javaを使用して計算する必要があります。 これまでのところ私は文書を読み、すべてのデータを表示するために打撃を行った。しかし、私はそれから "マーク"だけを得る方法を見つけることができませんでした。

MongoClient client = new MongoClient("localhost",27017); 
DB db = client.getDB("test_db"); 
DBCollection collection = db.getCollection("AllocatedMarks"); 

DBCursor cursor = collection.find(); 
while(cursor.hasNext()) { 
    System.out.println(cursor.next()); 
} 

これまでJavaを使用してMongoDBからデータを読み取っていることを知っています。文書から配列にマークフィールドだけを取得するのを手伝ってください。
ありがとうございます。

答えて

2

あなたはちょうどあなたがこの方法を行うことができますので、get()メソッドへの鍵を渡す必要があります:

同様にあなたが行うことができますforeachループを使用して
for(int i=0; i<cursor.size();i++){ 
    System.out.println(cursor.get(i).get("Marks")); 
} 

...

ありがとうございます。ここで

+0

感謝。これが行われます。 – jayz

0

まあ、DBCursorオブジェクトでget()メソッドを使用できます。
詳細はMongoDBのAPIを参照してください

System.out.println(cursor.next().get("Marks"); 

としてそれを使用してください。
DBCursorDBObjectBSONObject

2

は「マーク」を取得する方法である:

DBObject dbObject; 
while(cursor.hasNext()) { 
    dbObject = cursor.next(); 
    int marks = ((Number)dbObject.get("Marks")).intValue() 
} 

あなたが代わりに数の整数に直接キャストすることができるかもしれません。

重要ではない、しかし、あなただけのようにクエリを発行することができ、「マーク」をロードしたい場合:

BasicDBObject fieldsDBObject = new BasicDBObject(); 
fieldsDBObject.append("Marks",true); 
DBCursor cursor = collection.find(null, fieldsDBObject); 
+0

ありがとうございます。これは機能します。 – jayz

関連する問題