用Java从MongoDB中检索数组

时间:2017-08-01 12:53:04

标签: java arrays mongodb casting

我尝试读出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;

}

我不完全理解发布的解决方案来获取数组的所有值,所以我很想知道如何纠正转换错误。

1 个答案:

答案 0 :(得分:0)

我认为您需要在BasicDBList对象中存储主题:

 BasicDBList topics = (BasicDBList) document.get("Topics");

然后你可以迭代它并存储到你的数组中:

List<String> result = new ArrayList<String>();
for(Object element: topics) {
     result.add((String) element);
}