gpt4 book ai didi

java - 如何在 Spring Boot 中从 MongoDb 中仅读取特定 JSON 节点

转载 作者:行者123 更新时间:2023-12-02 08:46:24 25 4
gpt4 key购买 nike

我正在尝试通过我的 Springboot 项目从 MongoDb 读取单个 JSON 节点。

这是 Mongo 中保存的示例 JSON:

    "a": {
"b": {
"c": {
"d": "value1",
"e": "value2"
}
}
}

我尝试过:


public String get() {
BasicDBObject query = BasicDBObject.parse("{\"a.b.c.d\": \"value1\"}");
FindIterable<Document> dumps = mongoOperations.getCollection("data").find(query);
return dumps.first().toJson();
}

我得到的回复:


{
"_id": {
"$oid": "5e8aa42602ef9f05bf35ff59"
},
"a": {
"b": {
"c": {
"d": "value1",
"e": "value2"
}
}
}
}

但我只需要节点 a.b.c.d,我知道在阅读整个 JSON 后我可以在 java 中完成它。但我的目的是只阅读需要的部分。

预期输出:


{
"a": {
"b": {
"c": {
"d": "value1"
}
}
}
}

另请注意,我将使用随机模式保存 JSON,因此没有与之关联的 POJO。如果有人能在这方面指导我,那将非常有帮助。

最佳答案

您只能使用带有 find 查询的投影来获取指定字段。尝试使用 MongoDB Spring Data 2.2.6:

MongoOperations mongoOps = new MongoTemplate(MongoClients.create(), "testDB");

Query qry = new Query();
qry.fields().include("a.b.c.d").exclude("_id");
List<Document> list = mongoOps.find(qry, Document.class, "collection");
list.forEach(doc -> System.out.println(doc.toJson()));

输出:

{"a": {"b": {"c": {"d": "value1"}}}}

关于java - 如何在 Spring Boot 中从 MongoDb 中仅读取特定 JSON 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61053161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com