使用java操作mongo

使用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,不需要专门标识出内嵌文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值