2016-12-21 46 views
0

值現在我已經收集像這樣的文件:獲取從列表中的MongoDB的Java

{ 
    "_id": ObjectId("585a8ccc85a4ab1b160b39dc"), 
    "name": "GuildName", 
    "slots": 100, 
    "members": [{ 
     "membername": "playername1", 
     "rank": 3 
    }, { 
     "membername": "playername1", 
     "rank": 5 
    }], 
    "purchases": [], 
} 

我需要從「成員」獲得成員列表把它放在HashMap中(字符串,整數)。 (作爲「membername」的鍵值,作爲整數 - 「rank」的值)。

+2

添加您到目前爲止嘗試過的代碼,並且有人可以幫助您。 – Veeram

回答

0

假設doc是包含您的文檔Document對象:

HashMap<String, Integer> memberMap = new HashMap<>(); 
List<Document> members = (List<Document>)doc.get("members"); 
for (Document member : members) { 
    memberMap.put(
      (String)member.get("membername"), 
      (Integer)member.get("rank")); 
} 
0

有這樣做的許多方面。基於你的方法。

如果您使用BasicBSONObject然後

您可以撥打BasicBSONObject如果您使用的文檔對象,然後我不知道你爲什麼要明確轉換返回 LinkedHashMap<String,Object>

toMap()功能它到另一個散列映射,因爲org.bson.Document默認implements Map<String,Object>,所以你可以直接執行文件對象上的所有操作,你在散列映射上做的。

如果你還想把它複製到另一個hashmap中,你可以使用Yoshiya的代碼。