zoukankan      html  css  js  c++  java
  • 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);
            
        }
         
    }
  • 相关阅读:
    /proc/interrupts 和 /proc/stat 查看中断的情况
    publish and submit
    camera shading比例
    高负载linux调优
    linux网络socket 接口转
    深入分析linux调度机制
    大型网站架构之分布式消息队列
    Linux下高并发socket最大连接数所受的各种限制(详解)
    Linux服务器高并发实践经历
    oracle: 分割字符串,或者查找字段里面的关键字(关键字1,关键字2,关键字3)
  • 原文地址:https://www.cnblogs.com/chen1-kerr/p/7326771.html
Copyright © 2011-2022 走看看