接口IMongDaoUpdate:

package com.net.test.mongdb.dao;

import com.net.test.mongdb.entity.User;

public interface IMongDaoUpdate {

    public void updateUser(User user);

    public void updateUserHobby(User user);

    public void updateUserHobbyDiffer(User user);

    public void updateUserUserPsg(User user);

    public void deleteUserUserPsg(String name,String field);
}

实现类:

package com.net.test.mongdb.dao.imp;

import javax.annotation.Resource;

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository; import com.net.test.mongdb.dao.IMongDaoUpdate;
import com.net.test.mongdb.entity.User; /**
* @author ***
* @Time:2017年8月4日 下午1:50:16
* @version 1.0
* Function: TODO
*/
@Repository
public class MongDaoUpdateImp implements IMongDaoUpdate { @Resource
protected MongoTemplate mongoTemplate; /**
* @description 单条更新user信息
* @param user
*/
@Override
public void updateUser(User user)
{
Query query = Query.query(Criteria.where("name").is(user.getName()));
Update up = new Update();
up.set("sex", user.getSex()).inc("age", user.getAge()).set("hobby", user.getHobby()); mongoTemplate.updateFirst(query, up, User.class);
} /**
* @description 单独对user信息的某个特定数组字段继续追加数据,不管是否重复
* @param user
*/
@Override
public void updateUserHobby(User user)
{
Query query = Query.query(Criteria.where("name").is(user.getName()));
Update up = new Update();
String[] str = new String[user.getHobby().size()];
for(int i = 0 ; i < user.getHobby().size();i++)
{
str[i] = user.getHobby().get(i).toString();
}
up.pushAll("hobby", str);
mongoTemplate.updateFirst(query, up, User.class);
} /**
* @description 一次性追加多个不重复的数组元素
* @param user
*/
@Override
public void updateUserHobbyDiffer(User user)
{
Query query = Query.query(Criteria.where("name").is(user.getName())); Update up = new Update();
Object[] str = new Object[user.getHobby().size()];
for(int i = 0 ; i < user.getHobby().size();i++)
{
str[i] = user.getHobby().get(i).toString();
}
up.addToSet("hobby").each(str);
mongoTemplate.updateFirst(query, up, User.class);
} /**
* @description 更新内置对象
* @param user
*/
@Override
public void updateUserUserPsg(User user)
{
Query query = Query.query(Criteria.where("name").is(user.getName()));
Update update = new Update();
update.set("psg.address", user.getPsg().getAddress());
update.set("psg.phone", user.getPsg().getPhone());
update.set("psg.county", "江苏"); mongoTemplate.updateFirst(query, update, User.class);
} /**
* @description 删除内置对象的某个字段
* @param name
* @param field
*/
@Override
public void deleteUserUserPsg(String name, String field)
{
Query query = Query.query(Criteria.where("name").is(name));
Update update = new Update();
update.unset("psg.county");
mongoTemplate.updateFirst(query, update, User.class); } }

MongDB之各种修改操作的更多相关文章

  1. 关于SubSonic3.0插件使用实体进行更新操作时(执行T.Update()或T.Save()),某些列无法进行修改操作的问题处理

    SubSonic3.0插件在创建实体后,对实体进行赋值操作时,为了去除一些不必要更新的字段,减少更新的内容,会将更新内容与默认值进行比较,如果默认值与当前更新的内容相等时,则不提交更新本列,这主要是为 ...

  2. 采用DOM进行表格的修改操作

    2015-08-31 <html> <head> <title>采用DOM进行表格的修改操作</title> <script language=& ...

  3. uoj #58. 【WC2013】糖果公园(树上莫队算法+修改操作)

    [题目链接] http://uoj.ac/problem/58 [题意] 有一棵树,结点有自己的颜色,若干询问:u,v路径上的获益,并提供修改颜色的操作. 其中获益定义为Vc*W1+Vc*W2+…+V ...

  4. 基于jsp+servlet图书管理系统之后台用户信息修改操作

    上一篇的博客写的是查询操作,且附有源码和数据库,这篇博客写的是修改操作,附有从头至尾写的代码(详细的注释)和数据库! 此次修改操作的源码和数据库:http://download.csdn.net/de ...

  5. SpringDataJpa的批量 保存 修改 操作

    SpringDataJpa进行修改数据库操作有两种方式: 一.调用保存实体的方法 1.保存一个实体:repository.save(T entity) 2.保存多个实体:repository.save ...

  6. mysql常用快速查询修改操作

    mysql常用快速查询修改操作 一.查找并修改非innodb引擎为innodb引擎 # 通用操作 mysql> select concat('alter table ',table_schema ...

  7. java对excel文件内容读写修改操作

    Read.java package domain; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cel ...

  8. Java读取json文件并对json数据进行读取、添加、删除与修改操作

    转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0   1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...

  9. mybatis框架入门程序:演示通过mybatis实现数据库的修改操作

    1.mybatis的基本配置工作可以在我的这篇博客中查看:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2.修改用户的配置文件: <upd ...

随机推荐

  1. docker的卸载方法

    卸载: 1.查询docker安装过的包: yum list installed | grep docker 2.删除安装包: yum remove docker-ce.x86_64 ddocker-c ...

  2. <llinux下kvm虚拟化>

    原理就是本来可能要10台物理机完成的事现在只要5台,分别在每台物理机上虚拟一台,这5太虚拟机共享一个stronge,比如有一台物理机down掉后或是要做维护,我们可以把它上面的虚拟机牵走,从而减少损失 ...

  3. 50个必备的jQuery代码段

    本文会给你们展示50个jquery代码片段,这些代码能够给你的javascript项目提供帮助.其中的一些代码段是从jQuery1.4.2才开始支持的做法,另一些则是真正有用的函数或方法,他们能够帮助 ...

  4. 安装flask-mysqldb的时候,提示 mysql_config not found 的解决方法

    解决办法: sudo apt-get install libmysqlclient-dev sudo updatedb locate mysql_config 然后进入mysql_config的路径( ...

  5. [Environment Build] 工作中遇到的关于Git的问题

    修改已经提交的commit中的author, commit git commit --amend --author 'Your Name <Your Email>' git commit ...

  6. swift学习笔记7

    不管做什么事,只要敬业点,把该作的做好.不要总找借口. 不要看不起小事,生活本是一件件小事的集合.细节决定成败. 士兵突击里面有句台词:他每做一件小事的时候,都好像抓住了一根救命稻草,到最后你才发现, ...

  7. Hibernate笔记3--多表操作-导航查询

    一.一对多操作 1.构造实体类及编写配置文件:     一方:  // 一个Customer对应多个linkman private Set<Linkman> linkmans = new ...

  8. Yii2 components api/controller

    When we wrote API, those controllers need to implement the following feature: 1. return JSON format ...

  9. graylog插件的安装

    什么是插件和插件的作用我就不说了,大家应该都知道了. 安装方法是打开下面选择项     进去后出现如下界面 选择事先下载好的插件后,点击上传.这里以nginx日志插件为例 之后查看效果,发现对应的过滤 ...

  10. 聊聊javascript的事件

    javascript事件1.点击事件 onclick    obtn.click=function(){};2.移入/移出事件 onmouseover/onmouseout 注意:在父级中移入移出,进 ...