首页 > 解决方案 > 使用 Java FindIterable 访问 MongoDB 中的子文档值

问题描述

我正在尝试在子文档中打印出一个键值,但我无法找到正确的格式来执行此操作。

下面的语句打印出文件:

FindIterable<Document> documents = collection.find(query).projection(fields(include("user.ip_address"))).limit(5);

for (Document document : documents) {
    System.out.println(document.get("user"));
}

/* Output */

Document{{ip_address=10.0.0.1}}
Document{{ip_address=10.0.0.2}}
Document{{ip_address=10.0.0.3}}
Document{{ip_address=10.0.0.4}}
Document{{ip_address=10.0.0.5}}

我试过了:

System.out.println(document.get("user.ip_address"))(打印所有空值)

System.out.println(document.getObjectId("user", "ip_address"))

System.out.println(document.getObjectId(new Document("user", "ip_address")))(打印所有空值)

和其他 IntelliJ 出错的错误。

编辑:

这在下面确实有效,但似乎应该有更整洁的方法来做到这一点,尤其是随着嵌套文档的增加。

Document ip = (Document) document.get("user");
System.out.println(ip.get("ip_address"));

另外,我不知道为什么我需要将它转换为一个 Document 开始时它是一个 Document 。

System.out.println(document.get("user").getClass());
class org.bson.Document

标签: mongodb

解决方案


推荐阅读