有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mongodb Java:从Json文档读取单个值

我试图从mongodb查询中获取num_likes的值

查询的代码为:

FindIterable<Document> comments = postsCollection.find(eq("permalink", permalink))
.projection(fields(exclude(Arrays.asList("body","date", "author", "tags", "title")),slice("comments", ordinal, 1)));

for(Document c: comments) {
    System.out.println(c.get("comments"));
}

在末尾显示num_likesprintln输出:

[Document{{author=Tonia Surace, body=Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum, email=DcwPJgyw@mCBzxAfy.com, num_likes=1}}]

不熟悉Java,尝试过c.get("comments").get(0)但没有成功

更新

能够通过逐个分解值来获取值。有没有更好的方式直接访问它

for(Document c: comments) {
    System.out.println(c.get("comments"));
    ArrayList c2 = (ArrayList<Object>) c.get("comments");
    Document d = (Document) c2.get(0);
    System.out.println(d.get("num_likes"));
}

共 (1) 个答案

  1. # 1 楼答案

    MongoDB返回json,因此您应该了解如何在Java(Extracting JSON fields using java)中提取json字段

    您可以使用任何JavaJSON库来更方便地访问json字段。像杰克逊或格森