1.基本类型
a. set
1 | Query query = new Query(Criteria.where("_id").is("123")); |
set
:修改指定属性为指定数据;updateFirst
:修改根据query查找到的第一个实体对象。
b. 数字相关
1 | // 数字增加或者减少 |
c. 日期
1 | Update date = new Update().currentData("date"); |
2. field
a. rename
1 | Update update = new Update().rename("name", "new_name"); |
如果name
属性不存在,则不会发生更新。
b. 增加
1 | Update update = new Update().set("new_field", "new_field"); |
新增一个字段,使用set可以完成。
当对一个不存在的文档进行更新field时候,可以用setOnInsert
,若文档已经存在,则不会更新。
3. Array/List/Set
在mongodb中都转换为数组。
a. 添加
1 | Update update = new Update().addToset("new_element", "123"); |
addToSet
:不可以对已经存在的字段进行插入,即将数组当作Set类型处理;在后面加上each(),能够批量添加;
push
:允许重复。
b. 删除
1 | Update update = new Update().pull("del", "123"); |
c. 修改
1 | Update update = new Update().set("array.1", 10L); |
对数组array的index为1的元素修改为long
10。
Note:
a. 使用同一个Update
需要确保该Update内没有冲突的更新实体对象,即同一个update不能对实体的同一个属性进行多次修改。
b. 使用同一个Criteria
对同一个Criteria附加chain的操作时,要注意and()等会改变原先Criteria,即在操作中是深拷贝参数的。在拼接Criteria时尽量使用new Criteria().xxx()。