如何在 spring 启动应用程序中访问 MongoDB 文档作为 JSONObject

How to access MongoDB document as JSONObject in spring boot application

我在 mongoDB

中名为 event 的集合中有如下文档
{
    "name": "pick",
    "message": {
        "word": "seven",
        "sequenceNumber": 34
    }
}

在我开发 Spring 启动应用程序以访问它之前就已经存在。 现在我有一个 java 对象 Event.java 来访问上面的集合。

public class Event{
    private String name;
    private JSONObject messgae;
    // getters setters costructors
}

在文档中,message 可以是任何 json。因此,为 message 定义 class 没有任何意义。 我已尝试使用 mongoOperationsmongoTemplatemongoRepository,但我无法访问文档并更改值并再次存储它。我面临的问题是,

  1. 我无法使用 JSONObject 发送消息,因为 mongoOperations 没有支持
  2. 我无法将 String 用于 message,因为当我再次保存该对象时,它被序列化为 "message":"{\"word ...

有什么方法可以通过 spring 引导应用程序访问、修改和存储数据?

您可以使用 JSONObjectmongoOperations 中发送消息,如下所示。

JSONObject jsonObj= new JSONObject();
jsonObj.put("word", "seven");
jsonObj.put("sequenceNumber", new Integer(34));

//save
Event eventDocument = new Event("pick",jsonObj);
mongoOperations.save(eventDocument);

//find
Query query = new Query(Criteria.where("name").is("pick"));
Event object = (Event) mongoOperations.findOne(query, Event.class);
System.out.println(object.getName());
System.out.println(object.getMessage());