如何在 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 没有任何意义。
我已尝试使用 mongoOperations
、mongoTemplate
和 mongoRepository
,但我无法访问文档并更改值并再次存储它。我面临的问题是,
- 我无法使用
JSONObject
发送消息,因为 mongoOperations
没有支持
- 我无法将
String
用于 message
,因为当我再次保存该对象时,它被序列化为 "message":"{\"word ...
有什么方法可以通过 spring 引导应用程序访问、修改和存储数据?
您可以使用 JSONObject
在 mongoOperations
中发送消息,如下所示。
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());
我在 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 没有任何意义。
我已尝试使用 mongoOperations
、mongoTemplate
和 mongoRepository
,但我无法访问文档并更改值并再次存储它。我面临的问题是,
- 我无法使用
JSONObject
发送消息,因为mongoOperations
没有支持 - 我无法将
String
用于message
,因为当我再次保存该对象时,它被序列化为"message":"{\"word ...
有什么方法可以通过 spring 引导应用程序访问、修改和存储数据?
您可以使用 JSONObject
在 mongoOperations
中发送消息,如下所示。
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());