如何在Spring启动应用程序中以JSONObject的形式访问MongoDB文档

时间:2017-08-23 17:23:12

标签: java spring mongodb spring-boot spring-data-mongodb

我在mongoDB

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

在我开发Spring Boot应用程序之前存在。 现在我有一个java对象Event.java来访问上面的集合。

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

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

  1. 我无法将JSONObject用于留言,因为mongoOperations没有支持
  2. 我无法将String用于message,因为当我再次保存对象时,它会被序列化为"message":"{\"word ...
  3. 有没有办法可以通过spring boot应用程序访问,修改和存储数据?

1 个答案:

答案 0 :(得分:1)

您可以使用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());