mongodb修改list内的匹配元素java写法filterArray

由于公司用mongodb存储树状菜单,要对里面的子节点进行crud操作

数据结构如下

 要对child内的数据进行新增修改

比如往categoryDocmentList.child.child 名称为  '二级分类s3331'的sign添加一个数组元素

 Query query = new Query();
 query.addCriteria(Criteria.where("_id").is("6132dd9b0bb4b1261b244932"));//查询指定的文档
 Update update = new Update();
 BasicDBObject basicDBObject = new BasicDBObject();
 basicDBObject.append("id","11");
 basicDBObject.append("name","sdss");
 update.filterArray(Criteria.where("child.child.name").is("二级分类s3331")); //指定刷选条件
 update.push("categoryDocmentList.$[].child.$[child].child.$[].sign",basicDBObject); //使用push添加元素
 UpdateResult updateResult1 = mongoTemplate.updateFirst(query, update, User.class);

其他的修改操作就用

update.set() 

关键在于用filterArray 指点刷选列,并且在update()里的表达式$[]写法中指定刷选列

百度了很多写法,都没有结果,这是中和了多种博客中我认为目前最简单的一种

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值