2016-12-21 3 views
0

теперь у меня есть коллекция с документами, как это:Получить значения из списка MongoDB Java

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

Мне нужно, чтобы получить список членов из «членов», чтобы поместить его в HashMap (String, Integer). (как ключ - значение «membername», как Integer - значение «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 то

Вы можете вызвать toMap() функцию BasicBSONObject, которая возвращает LinkedHashMap<String,Object>

если вы используете объект документа, то я не знаю, почему вы хотите явно конвертировать это к другому хэшмапу, потому что org.bson.Document по умолчанию implements Map<String,Object>, поэтому вы можете выполнять все операции с объектом документа, непосредственно связанные с хэш-памятью.

Если вы все еще хотите скопировать его в другой хэш-код, вы можете использовать код Йошии.

Смежные вопросы