spring mongodb 修改内嵌list字段值

引子

我在项目中用的是spring mongodb,今天遇到了一个修改内嵌arraylist里面某个对象的字段报出的问题,下面和大家分享一下正确修改mongodb内嵌list里面字段值的方式,同时也给自己做一份笔记。

场景描述

数据结构如下:
这里写图片描述
如上图数据结构,我要修改discussList里面某一个对象(数据时用java对象加进去的,这里先称它为对象)的content字段。

解决方式

1、原生mongodb修改语句:

db.Yues.update({"discussList._id":"d_ef21b0bf-9bd4-4516-8217-2a9caab8b9e0"}, { $set : {"discussList.$.content":"内容" }})

1、spring mongodb修改语句,这里给出的是往replys里面加数据的方式,实际上也没什么大的区别:

public void replyDiscuss(String replyId, ActivityDiscuss discuss){
        Query query = Query.query(Criteria.where("discussList._id").is(replyId));
        Update update = new Update().push("discussList.$.replys", discuss);
        mongoTemplate.updateFirst(query, update, Yues.class);
    }

总结

这里关键在于“.$.”。

“discussList. .content. .”是找到discussList元素下标的意思。

理解这一点,注意一下以后再遇到类似的问题就可以很好的解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值