MongDB之各种修改操作
接口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之各种修改操作的更多相关文章
- 关于SubSonic3.0插件使用实体进行更新操作时(执行T.Update()或T.Save()),某些列无法进行修改操作的问题处理
SubSonic3.0插件在创建实体后,对实体进行赋值操作时,为了去除一些不必要更新的字段,减少更新的内容,会将更新内容与默认值进行比较,如果默认值与当前更新的内容相等时,则不提交更新本列,这主要是为 ...
- 采用DOM进行表格的修改操作
2015-08-31 <html> <head> <title>采用DOM进行表格的修改操作</title> <script language=& ...
- uoj #58. 【WC2013】糖果公园(树上莫队算法+修改操作)
[题目链接] http://uoj.ac/problem/58 [题意] 有一棵树,结点有自己的颜色,若干询问:u,v路径上的获益,并提供修改颜色的操作. 其中获益定义为Vc*W1+Vc*W2+…+V ...
- 基于jsp+servlet图书管理系统之后台用户信息修改操作
上一篇的博客写的是查询操作,且附有源码和数据库,这篇博客写的是修改操作,附有从头至尾写的代码(详细的注释)和数据库! 此次修改操作的源码和数据库:http://download.csdn.net/de ...
- SpringDataJpa的批量 保存 修改 操作
SpringDataJpa进行修改数据库操作有两种方式: 一.调用保存实体的方法 1.保存一个实体:repository.save(T entity) 2.保存多个实体:repository.save ...
- mysql常用快速查询修改操作
mysql常用快速查询修改操作 一.查找并修改非innodb引擎为innodb引擎 # 通用操作 mysql> select concat('alter table ',table_schema ...
- java对excel文件内容读写修改操作
Read.java package domain; import java.io.FileInputStream; import java.io.InputStream; import jxl.Cel ...
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
转载:http://blog.csdn.net/qing_yun/article/details/46865863#t0 1.介绍 开发过程中经常会遇到json数据的处理,而单独对json数据进行 ...
- mybatis框架入门程序:演示通过mybatis实现数据库的修改操作
1.mybatis的基本配置工作可以在我的这篇博客中查看:https://www.cnblogs.com/wyhluckdog/p/10149480.html 2.修改用户的配置文件: <upd ...
随机推荐
- calendar 类 用法
add()和roll()区别 一.Calendar 月份从 0-11,要表示8月,应该传入7 . 二.set() 会自动转换为合法的日期,如 set(1999,8,31) 表示的是1999-09-3 ...
- 从Flux到Redux详解单项数据流
从Flux到Redux是状态管理工具的演变过程,但两者还是有细微的区别的.但是最核心的都还是观察者模式的应用. 一.Flux 1. Flux的处理逻辑 通俗来讲,应用的状态被放到了store中,组件是 ...
- ZK数据同步
整个集群完成Learner选举后,Learner向Leader发起注册,然后进入数据同步环节,即Leader将learner上缺失的事务请求同步给Learner 1). 获取Learner状态 根据L ...
- JAVA 集合类小结
一 集合和数组 因为本人也是个go的爱好者,所以对于集合类算是摸的比较透的. 说到集合,必须了解数组和集合. Java的数组长度固定,集合长度不定.集合是特定的数据结构的集合. 而go里面并没有集合, ...
- 使用PM2守护Node.js应用
PM2简介 PM2是node进程管理工具,可以利用它来简化很多node应用管理的繁琐任务,如性能监控.自动重启.负载均衡等,而且使用非常简单. 安装PM2 $ npm install pm2 -g ...
- orcale函数
字符函数 1.ASCII 返回与指定的字符对应的十进制数; select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space ...
- Spring相关理解
日常拖完整患者............... 待续...
- swift学习笔记7
不管做什么事,只要敬业点,把该作的做好.不要总找借口. 不要看不起小事,生活本是一件件小事的集合.细节决定成败. 士兵突击里面有句台词:他每做一件小事的时候,都好像抓住了一根救命稻草,到最后你才发现, ...
- How to Install Apache Solr 4.5 on CentOS 6.4
By Shay Anderson on October 2013 Knowledge Base / Linux / How to Install Apache Solr 4.5 on Cent ...
- 实现一个Promise.all
用js自己实现一个Promise.all let promiseAll = (promises) => { return new Promise((resolve, reject) => ...