如何从 Spring Boot 更新 mongoDb 中的单个 JSON 字段

Posted

技术标签:

【中文标题】如何从 Spring Boot 更新 mongoDb 中的单个 JSON 字段【英文标题】:How to update individual JSON field in mongoDb from Springboot 【发布时间】:2020-07-17 04:24:30 【问题描述】:

我正在尝试从 Springboot 更新 MongoDb 中存储的 JSON 的单个字段的值。我没有使用POJO,因为JSON 架构总是随机的。

// this is what I'm trying to achieve. But I don't know how to do it from SpringBoot.
    db.collection.update(   _id:12345 ,  $set:  a.b.c.d : updatedValue    

这就是我将JSON 对象保存到MongoDB 的方式:

    Mongo mongo = new Mongo("localhost", 27017);
    DB db = mongo.getDB("dbOne");
    DBCollection collection = db.getCollection("data");

    // convert JSON to DBObject directly
    DBObject dbObject = (DBObject) JSON.parse(jsonString);

    collection.insert(dbObject);

我的JSON 样本数据:

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

【问题讨论】:

【参考方案1】:

是的,您可以通过 mongoOperations 和更新 API 来实现。 这将允许您更新 mongodb 集合中的各个字段- 例如:

Query query = new Query(new Criteria("id").is(12345L));
Update updateOp = new Update().set("a.b.c.d", value);
mongoOperations.updateFirst(query, updateOp, COLLECTION);

【讨论】:

很高兴它帮助了你。

以上是关于如何从 Spring Boot 更新 mongoDb 中的单个 JSON 字段的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Spring Boot 上的 org.testcontainers.containers.ContainerFetchException?

如何自动更新页面上的数据,Angular 7 和 Spring Boot

Spring boot 2.1.3 从 2.0.6 更新导致 util:map 的 BeanDefinitionParsingException

如何在 Spring Boot 中更新子实体和父实体?

如何在 Spring Boot Restful 中更改大量数据(更新多个数据)

如何使用 Spring boot keycloak 适配器 + spring security 强制更新 oAuth 令牌(访问令牌 + 刷新令牌)。?