我尝试读出MongoDB中文档数组的所有字段。 我尝试将从Stackoverflow发布的解决方案改为我的用例,但是我收到了错误消息:
Exception in thread "main" java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.mongodb.BasicDBList
at Connector.getTopics(Connector.java:249)
基本上我想在"主题"中读出数组。该集合中的第一个文件" Topics"并将值保存到arrayList并返回它。
public ArrayList<String> getTopics() throws RemoteException {
// TODO Auto-generated method stub
MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
MongoDatabase database = mongoClient.getDatabase("JMS");
MongoCollection<Document> collection = database.getCollection("Topics");
ArrayList<String> list = new ArrayList<String>();
Document document = collection.find(eq("_id", 1.0)).first();
ListIterator<Object> topics = ((BasicDBList) document.get("Topics")).listIterator();
while(trustedList.hasNext()){
Object nextItem = topics.next();
list.add((String) nextItem);
}
return list;
}
我不完全理解发布的解决方案来获取数组的所有值,所以我很想知道如何纠正转换错误。
答案 0 :(得分:0)
我认为您需要在BasicDBList对象中存储主题:
BasicDBList topics = (BasicDBList) document.get("Topics");
然后你可以迭代它并存储到你的数组中:
List<String> result = new ArrayList<String>();
for(Object element: topics) {
result.add((String) element);
}