Java

2012-03-11 15 views
10

ile MongoDB gelen dizi değerlerini almak i aşağıdaki kodu vardır:Java

DBCollection collsc = db.getCollection("StudentCourses") ; 
BasicDBObject querysc = new BasicDBObject("StudentID",id); 
DBCursor curssc = collsc.find(querysc); 

while(curssc.hasNext()) { 

    DBObject e = curssc.next(); 
    System.out.println("You are currently registered for the following modules: ") ; 
    System.out.println(e.get("CoursesRegistered")) ; 

} 

Bu çıkışlar:

You are currently registered for the following modules: 
[ "DigitalLogic" "OperatingSystems" , "FundamentalsCSE"] 

Ancak i yalnızca değerleri dizisi dönen verilsin, yani DigitalLogic, İşletim Sistemi ve TemelleriCSE. Bir JList'i doldurmak için bu değerleri kullanacağım. Yardım lütfen?

cevap

17

deneyin yerine

DBObject e = curssc.next(); 

ait

BasicDBList e = (BasicDBList) curssc.next().get("CoursesRegistered"); 

kullanmak ve daha sonra e.getIndex (indeks) değeri elde etmek;

+0

Çalışmıyor. "Ana" java.lang.ClassCastException dizisindeki İstisna: aşağıdaki gibi özel durum almak com.mongodb.BasicDBObject modules.RegistrationSystem.main (RegistrationSystem.java:80) –

+0

Maalesef at com.mongodb.BasicDBList \t için döküm edilemez Cevabımı düzenledim –

+0

Yine de istisnalar. iplik "ana" java.lang.IllegalArgumentException içinde İstisna: BasicBSONList yalnızca sayısal anahtarlar ile çalışabilmek: [CoursesRegistered] org org.bson.types.BasicBSONList._getInt (BasicBSONList.java:161) \t de \t. bson.types.BasicBSONList._getInt (BasicBSONList.java:152) org.bson.types.BasicBSONList.get de \t (BasicBSONList.java:104) modules.RegistrationSystem.main de \t (RegistrationSystem.java:82) –