从MongoDB java列表中获取值

时间:2016-12-21 15:09:10

标签: java mongodb mongodb-query

现在我收藏了这样的文件:

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

我需要从"成员"中获取成员列表。把它放在HashMap(String,Integer)中。 (作为关键 - "会员名称"的价值,作为整数 - "排名")。

2 个答案:

答案 0 :(得分: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"));
}

答案 1 :(得分:0)

有很多方法可以做到这一点。根据你的方法。

如果您使用BasicBSONObject,那么

  

您可以在toMap()上调用BasicBSONObject函数返回   LinkedHashMap<String,Object>

如果您正在使用文档对象,那么我不确定您为什么要将其显式转换为另一个hashmap,因为org.bson.Document默认为implements Map<String,Object>所以您可以直接对文档对象执行所有操作你在一个hashmap上做。

如果您仍想将其复制到另一个散列图,则可以使用Yoshiya的代码。