如何在MongoDB中保存半结构化数据

如何在MongoDB中保存半结构化数据,mongodb,spring-data,spring-data-mongodb,Mongodb,Spring Data,Spring Data Mongodb,我正试图找出如何使用SpringMongo将半结构化文档持久化到MongoDB。以下是我试图实现的一个示例: { "name": "Test", "admin": false, "unstructured_field_one": "Some arbitrary data" } 我知道如何将完全非结构化的数据作为父文档中的字段来处理,在父文档中我可以使用 //... private Object someRandomObject; 但是我如何才能完成一个半结构化文档(在父级),在这

我正试图找出如何使用SpringMongo将半结构化文档持久化到MongoDB。以下是我试图实现的一个示例:

{
  "name": "Test",
  "admin": false,
  "unstructured_field_one": "Some arbitrary data"
}
我知道如何将完全非结构化的数据作为父文档中的字段来处理,在父文档中我可以使用

//...
private Object someRandomObject;

但是我如何才能完成一个半结构化文档(在父级),在这个文档中,如示例中所示,
name
admin
作为必填字段,并且请求中附带的任何内容都会自动添加

无需任何pojo,只需使用Json解析器(Jackson)和
MongoTemplate
。由于MongoTemplate可以保存任何DbObject,因此需要将json转换为DbObject。
这样就行了

 ObjectMapper mapper = new ObjectMapper();
 TypeReference<Map<String,Object>> typeRef
        = new TypeReference<Map<String,Object>>() {};
 Map<String,Object> map = mapper.readValue(json, typeRef);
 DBObject dbObject = new BasicDBObject(map);

 mongoTemplate.getCollection("blahblah").save(dbObject);
ObjectMapper mapper=new ObjectMapper();
类型引用类型引用
=新类型引用(){};
Map=mapper.readValue(json,typeRef);
DBObject DBObject=新的基本对象(map);
mongoTemplate.getCollection(“blahblah”).save(dbObject);

自动添加到其中。您至少需要一个字段来存储值。你可以通过这样一个字段
private Map unstructuredData
@pvpkiran,是的,我知道-但这意味着将它添加到一个单独的字段下-这正是我不想做的。我希望我的结构化数据(例如,我在POJO中所涉及的字段)与非结构化数据处于同一级别。如果这有道理的话。