2013-06-26 4 views
2

mongoDB에서 배열 요소를 가져 와서 표시하고 싶습니다. 여기에 샘플 코드가 있습니다.java를 사용하여 mongoDB 배열을 표시하는 방법

String[] previliges = new String[20]; 
String g_name = (String)jComboBox2.getSelectedItem(); 
DBCursor f; 
BasicDBObject query = new BasicDBObject("group_name", g_name); 

connection.MongoConnection con = new MongoConnection(); 
con.createConnection(); 
con.selectDB("test", "user_group"); 

f = con.coll.find(query); 
previliges = (String[])f.next().get("privileges"); 
System.out.println(previliges.length); 

것은 나에게 예외주고있다 -> com.mongodb.BasicDBList가 [Ljava.lang.String으로 캐스팅 할 수 없습니다; MongoDB를 수집에서

내 샘플 문서 :

{  
    "_id" : ObjectId("51c7ebd9e4b096449a530024"), 
    "group_name" : "assss", 
    "privileges" : [ 
     "View Log History", 
     "Communication" 
    ] 
} 
+1

참조를 http://stackoverflow.com/questions/8957900/reading-an-array-in-mongodb –

답변

0

당신은 com.mongodb.BasicDBList 참조는 기본적으로 ArrayList를 확장합니다.

f.next().get("privileges");은 목록입니다. 당신은

previliges= f.next().get("privileges").toArray(new String[0]); 

예처럼 뭔가를 할 수 있습니다, 0 괜찮습니다. 권한의

+0

@ Nishant-> 심볼 toArray()를 찾을 수 없습니다. –

+0

그것은 이상합니다. 먼저 BasicDBList로 형변환해야 할 수도 있습니다. 그런 다음 toArray를 호출하십시오. 의사는 toArray를 지원한다고 분명히 말합니다. – Nishant

1

배열은 다시 BasicDBList, 문자열이 아닌 배열로 올 것이다 ...

previliges= f.next().get("privileges").toArray(new String[20]); 

은 분명히 등 NULL 체크를 수행 그래서,이입니다. 그래서 그것을 String []으로 형변환 할 수 없습니다. 대신 일을

:

previliges=(String[]) f.next().get("privileges"); 
System.out.println(previliges.length); 

보십시오 : 당신이 어떤 목록을 통해 것 같은

BasicDBList privileges = (BasicDBList) f.next().get("privileges"); 
System.out.println(privileges.size()); 

당신이 반복 할 수 있습니다

for (Object privilege : privileges) { 
    String privilegeAsString = (String) privilege; 
} 
관련 문제