详解 com.mongodb.client.model.Updates 教程

JAVA herman 52浏览

网上搜索了一下关于 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)!可加QQ1群:135430763(2000人群已满),QQ2群:454796847,QQ3群:187424846。QQ群进群密码:xttblog,想加微信群的朋友,可以微信搜索:xmtxtt,备注:“xttblog”,添加助理微信拉你进群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作可添加助理微信进行沟通!

本文原文出处:业余草: » 详解 com.mongodb.client.model.Updates 教程