使用java操作mongo
在学习使用java语句将一具有多层的JSON文档转换为对象插入到mongo中的操作
JSON文档的样式
{
"name":"张爸",
"age":"80",
"postion":"农民",
"child":[{
"name":"张大",
"age":"61",
"child":[
{
"name":"张大儿",
"age":"39"
},{
"name":"张大女",
"age":"35"
}
]
},{
"name":"张二",
"age":"58",
"child":[
{
"name":"张二儿",
"age":"37"
},{
"name":"张二女",
"age":"35"
}
]
},{
"name":"张三",
"age":"56",
"child":[
{
"name":"张大儿",
"age":"37"
}
]
}]
}
//实体类Parent
@Data
@Document
public class Parent(){
@id
private String id;
@Field
private String name;
private String age;
private String postion;
ptivate List<Parent> child;//疑惑
}
//实体类 Child
@Data
public class Child(){
private String name;
private String age;
}
首先,将JSON文档转换为对象
public String insertDocument(JSONObject object){
//Parent为一个实体类
Parent parent=JSON.parseObject(object.toJSONString(),Parent.class);
}
在使用parseObject的过程中产生误解,以为转换一层,在后面才理解到它可以将整个json进行转换,无论它内嵌多少层,
但是使用过程中发现发现我无法将Parent中的child类型定为Child,不然就只能嵌套一层后面,目前还没没有太明白
其次,将其插入到mongodb中
/*目前我了解到的mongotemplate中可以完成插入的语句有
*insert,save,upsert
*其中insert在如果我的mongo中id存在的情况下,操作会报错
*save可以在数据存在的情况下更新,在不存在的情况下插入,但是他是根据主键id来判断是否是同一条数据
*upsert他可以根据query所设置的查询条件进行判断,但是我不太清楚他是否一定要更新, 且是否是只能更新语句还是可以整个文档进行更新???
*/
mongotemplate.save(parent,"parent");
在使用插入语句时他可以一条语句插入多层的json,不需要专门标识出内嵌文档