如何使用Spring Boot在Mongo中存储原始JSON

use*_*949 9 json mongodb spring-boot

我想用JSON获取HTTP PUT请求并在Mongo中不加修改地存储它.我怎样才能做到这一点?我最好的是:

@RestController
public class ConfigurationController {

    @Autowired
    private MongoTemplate mongoTemplate;

    @RequestMapping
    public DBObject index() {
        return mongoTemplate.getCollection("foo").findOne();
    }

    @RequestMapping(method = RequestMethod.PUT)
    ResponseEntity<?> add(@RequestBody DBObject object) {

        mongoTemplate.insert(object, "foo");

        return new ResponseEntity<>(null, HttpStatus.CREATED);
    }

}
Run Code Online (Sandbox Code Playgroud)

Rod*_*yas 12

在较新版本的Mongodb(mongo-java-driver 3.0+)中,API使用org.bson.Document,因此您的解决方案应如下所示:

@RestController
public class ConfigurationController {

   @Autowired
   private MongoTemplate mongoTemplate;

   @RequestMapping(method = RequestMethod.PUT)
   ResponseEntity<?> add(@RequestBody String jsonString) {

       Document doc = Document.parse(jsonString)
       mongoTemplate.insert(doc, "foo");

       return new ResponseEntity<>(null, HttpStatus.CREATED);
   }

}
Run Code Online (Sandbox Code Playgroud)


sod*_*dik 3

也许不是最好的解决方案,但类似的东西应该可以工作 - 更改控制器以接受任何字符串:

... add(@RequestBody String object) ...
Run Code Online (Sandbox Code Playgroud)

并关注http://www.mkyong.com/mongodb/java-mongodb-convert-json-data-to-dbobject/

DBObject dbObject = (DBObject) com.mongodb.util.JSON.parse(object);
Run Code Online (Sandbox Code Playgroud)