本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云
网上搜索了一下关于 MongoDB 的相关教程,发现非常的少,少的可怜。网上的多少教程都是基于查询 SQL 的,很少有基于 Java Api 来写的。因此,我最近一直在看 MongoDB 的相关驱动包的源码,试着给大家分享一些关于 MongoDB 的相关教程和用法。
Updates 类也是一个 final 类,它虽然在 com.mongodb.client.model 包里面,但它的作用却非常的强大。Updates 里面的方法都是静态方法,静态方法是 MongoDB java 驱动包的一大特色。Updates 类的构造函数被私有化了,所以里面都是静态方法。
Updates 类被官方称为更新工厂。它里面还提供了 5 个内部类。CompositeUpdate 类是比较常用的,它经常被用来组合查询条件或者是组合更新的 set 值的集合。常见的用法如下:
updateMany(and(eq("url", "www.xttblog.com"), eq("hidden", true), eq("type", "admin")), combine(set("name", "业余草"), set("createTime", System.currentTimeMillis() / 1000)));
第二个最常用的方法就是 Updates.set 方法,它相当于 $set 的用法,我就不过多解释。用法就和上面的例子一样,直接调用 set 方法即可,代表 set 的字段需要更新新值。
剩下的一些用法,我就大致的讲解一下,unset 相当于删除。
setOnInsert 方法的用法,相当于 $setOnInsert,代表:如果更新的值存在,则不做操作;如果更新的值不存在则插入新的字段。
rename 方法相当于 $rename 的用法,重命名已经存在的字段。更新后的字段名不能和原字段名相同。
inc 方法相当于 $inc 的用法。它用来在原值上增加内容,比如我现在的库存是 50,我又进了一批货,需要在原值上增加 20,怎么办?用 inc 方法即可。
updateMany(eq("sku", "501111"), inc("quantity", 50));
mul 方法相当于 $mul,$mul 操作符用一个数字乘以一个值。比如 $mul: { price : 1.25 } 表示,price 的值在原来的基础上乘以 1.25。
min 方法相当于 $min,就是代表最小值。
max 方法相当于 $max 操作,代表最大值。
currentDate 方法相当于 $currentDate 操作。设置时间为当前时间。
currentTimestamp 方法,相当于利用 $currentDate 设置时间为当前时间,并且时间类型为 timestamp 类型。
addToSet 方法相当于 $addToSet 操作。$addToSet 添加值到一个数组中去,如果数组中已经存在该值那么将不会有任何的操作。
addEachToSet 方法就相当于 $addToSet 操作符和 $each 修饰符配合使用。$each 修饰符允许 $addToSet 操作符添加多个元素到数组字段中。
push 方法相当于 $push 操作。$push 操作符添加指定的值到数组中。
pushEach 方法相当于使用 $push 操作符和 $each 修饰符一起添加多个值到数组字段中。
pull 方法相当于 $pull 操作,$pull 修饰符会删除掉数组中符合条件的元素。
pullByFilter 方法顾名思义就是根据过滤的条件删除掉数组中的指定元素。
pullAll 方法就是删除掉数组内的多个内容。内部是靠 PullAllUpdate 类实现的。用法相当于 $pull,只不过可以一次删除多个值。
popFirst 方法就相当于 $pop 操作。$pop 修饰符删除数组中的第一个或者最后一个元素,给 $pop 传递 -1 会删除第一个元素传递 1 会删除最后一个元素。popFirst 方法内部是靠 SimpleUpdate 类实现的,其实就是 $pop 操作传递了 -1。
popLast 这个方法和 popFirst 都差不多,一个是 $pop 传递 -1,一个是 $pop 传递 1。
bitwiseAnd 方法内部是 $bit 操作。$bit 支持按位更新。运算符支持按位 and,按位 or 和按位 xor(即异或)运算。
bitwiseOr 和 bitwiseXor 都和 bitwiseAnd 方法类似,我就不在多说了。总而言之,看一篇不如自己操作一篇,只有自己操作一遍才有感觉!
最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!
本文原文出处:业余草: » 详解 com.mongodb.client.model.Updates 教程