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 ...
随机推荐
- 一般的linux系统默认安装的vim是精简版
一般的linux系统默认安装的vim是精简版(vim-tiny),所以不能配置语法检查等属性或获取在线帮助.需要安装vim-x:x.x.x,vim-common,vim-runtime. :synta ...
- C 碎片九 预处理&位运算&文件操作
一.预处理 预处理语句:#开头的语句,在预处理阶段处理预处理语句.包括宏定义.文件包含处理.条件编译 1, 宏定义 1. 不带参数宏定义:#define 标识符 字符串 #define PI 3.1 ...
- synchronized锁——8锁
前言 多线程是Java面试中最喜欢问的问题之一,有一篇公众号推文内容很详细,推荐看看 但凡面试官考“多线程”,一定会问这10个问题! 本文中仅对synchronized关键字的加锁进行一定分析 一.标 ...
- ElasticSearch安装(以Docker的方式)
拉取docker镜像: docker pull docker.elastic.co/elasticsearch/elasticsearch:6.1.1 命令行方式启动 测试环境 :docker ...
- Linux - 数值运算
Shell - 数值运算 因为shell脚本是属于弱语言,没有变量类型的概念,所以定义变量会默认为字符串.就算看上去是一个数字,当直接进行计算时,就会出错: x=1 echo $x+=1 # 输出1+ ...
- C# 发Domino邮件 报错误 Password or other security violation for database 的解决方案
错误提示: Password or other security violation for database ******* 问题产生的描述: 之前C#发邮件是好的 加上了附件部分代码之后,出现了这 ...
- Mybatis介绍(一)
这里介绍的mybatis比较简单, 我做为一个初学者, 记录下个人在学习中方法, 如果那里出错, 希望读者朋友们见谅. 首先这里介绍一下我们下面用的表结构: author表是保存了作者的个人信息, 因 ...
- Linux、命令ps 各字段意思
参数: -A :所有的进程均显示出来,与 -e 具有同样的效用: -a : 显示现行终端机下的所有进程,包括其他用户的进程: -u :以用户为主的进程状态 : x :通常与 a 这个参数一起使用,可列 ...
- crontab配置shell实现后台进程不间断运行
检测get_report_no.php进程是否一直在运行 #!/bin/bash PROC=`ps -ef |grep get_report_no.php|grep -v grep|wc -l` if ...
- 站点安全预警,建议大家多重禁止load_file函数!
比如在你的linux机器上运行 select load_file(0x2F6574632F706173737764); 看看结果是什么?这应该不是我们希望看到的. 所以我们禁用这个函数吧. 这个主要通 ...