一:环境搭建
环境搭建代码(SSM+mongdb)点击打开链接
二:根据_id跟新collection中存在的字段。
1,写法
_id,及值是存在的。field orderDate也是存在的。
2,test
3,结果
三:根据_id更新collection中不存在的field
1,写法
2,结果
使用mongoTemplate.upsert()完成,filed不存在,则添加上去。
结果:
四:更新多条数据(并不是更新多个document,而是满足条件的更新)对比SQL批量更新。
对满足条件的都进行更新。
1,写法
2,测试前
3,测试后
验证了执行逻辑。
五,验证mongoTemplate.updateFirst()执行逻辑。
1,写法
2,测试前
3,测试后
4,满足逻辑。当满足条件的document有多个的时候,只更新其中一条。
六:验证inc(累加)
1,字符串情况
写法
测试前
测试后
说明inc对字符串是不能进行+的,而且程序没有报错,也没有抛异常,反正就像什么都没有发生一样。
2,数字情况
写法
测试前
测试后
验证逻辑。
七,验证rename(重命名Key)
写法
测试前
测试后
八,验证unset(移除key)
写法
测试前
测试后
九:嵌入文档
写法
测试前
测试后
十:修改嵌入的文档
写法
测试前
测试后
十一:删除嵌入的文档
写法
测试前
测试后
十二:再次嵌入文档(内容跟第一次嵌入文档一样)
写法
测试前
测试后
十三:再次删除文档
写法
测试前
测试后
没有任何变化。
修改写法
测试结果
对比update.pull()于update.unset()。从结果就可以看出,unset只删除value并留下一个null。而pull()删除value后未留下null.但是pull中的对象跟数据库中的对象一致,在数据内容上完全一致,有一点不一样,则无法删除。
十四,批量更新document。这里更新后的结果是不一样的,比如第一条数据的,orderCode更新为1003;第二条数据的orderCode更新为1004;第三条的orderCode跟新为1005。排除循环执行一条一条更新。