SpringData MongoDB

摘要:
1、 使用步骤1.1导入pom dependency<dependency><groupId>org。弹簧框架。boot</groupId><artifactId>spring boot starter data mongodb</artifactId></dependency>1.2应用程序。属性。添加配置弹簧。数据mongodb.database数据库=

一、使用步骤


 

1.1 导入pom依赖

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>

1.2 application.properties中加入配置

spring.data.mongodb.database=admin
spring.data.mongodb.host=10.19.186.213
spring.data.mongodb.port=27017

1.3 编写实体类

@Document("User")
public class User<Data> implements Serializable {
    @Field("Id")
    private Integer Id;
    @Indexed
    private String name;
    private String age;

Document 文档,填写集合名称

1.4 使用Template编写新增方法

/**
     * 保存对象
     * @param user
     */
    public void save(User user){
        mongoTemplate.save(user);
    } 

执行结果,数据库中新增一条记录

SpringData MongoDB第1张

 1.5 使用Template编写查询方法

/**
     * 查询单个对象
     * @param name
     * @return
     */
    public User findUser(String name){
        Query query = new Query(Criteria.where("name").is(name));
        User user = mongoTemplate.findOne(query, User.class);
        return user;
    }

SpringData MongoDB第2张

 1.6 使用Template更新

 /**
     * 更新用户
     * @param user
     */
    public void updateUser(User user){
        Query query=new Query(Criteria.where("Id").is(user.getId()));
        Update update= new Update().set("age", user.getAge()).set("name", user.getName());
        mongoTemplate.updateFirst(query,update,User.class);
    }

SpringData MongoDB第3张

 1.7 删除用户

/**
     * 删除用户
     * @param id
     */
    public void deleteUser(Integer id){
        Query query=new Query(Criteria.where("Id").is(id));
        mongoTemplate.remove(query,User.class);
    }

  

2.1 使用Repository对数据库进行CURD

2.1.1 接口继承MongoRepository

public interface RepositoryTest extends MongoRepository<User,String> {
}

2.1.2 引入repository

@Autowired
    private RepositoryTest repositoryTest;

2.1.3 新增用户测试

 /**
     * 增加用户
     */
    @Test
    public void saveUser(){
        User<Object> user = new User<>();
        user.setId(10001);
        user.setName("anan");
        user.setAge("12");
        repositoryTest.save(user);
    }

2.1.4 查询用户测试

 /**
     * 查询用户
     */
    @Test
    public void findUser(){
        Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
        System.out.println(byId.get().toString());
    }
根据ID进行查询

SpringData MongoDB第4张

 根据其他属性进行查询:

根据name进行查询,首先在Repository中新增方法

User findByName(String name);
 /**
     * 根据条件查询
     */
    @Test
    public void findUserByCondition(){
        User byId = repositoryTest.findByName("anan");
        System.out.println(byId);
    }

SpringData MongoDB第5张

 2.1.5 更新用户测试

  /**
     * 使用save更新,需要测试
     */
    @Test
    public void updateUser(){
        Optional<User> byId = repositoryTest.findById("61386067aa33044a1195589b");
        User user = byId.get();
        user.setName("de");
        repositoryTest.save(user);
        System.out.println("更新用户完成");
    } 

在刚开始测试时,发现并不能修改这条记录,一直会新增

后来发现数据中的中_id字段

SpringData MongoDB第6张

 save修改的原理是根据_id是否已经存在,存在则修改,不存在则新增,而我的User中是没有这个字段的,所以每次传过去都是空的_id,会一直新增

@Document("User")
public class User<Data> implements Serializable {
    private String _id;

在User中新增_id字段解决上面问题

SpringData MongoDB第7张

 可以看到_id记录中的名称已经修改了

2.1.6 删除用户测试

根据_id进行删除

/**
     * 删除用户测试
     */
    @Test
    public void deleteUser(){
        repositoryTest.deleteById("613866efd78e4b6246d8b5b1");
        System.out.println("删除成功");
    } 

根据id批量删除,首先在repository中新增方法

void deleteAllBy_idIsIn(List<String> ids);

  

 /**
     * 批量删除
     */
    @Test
    public void batchDeleteUser(){
        ArrayList<String> list = Lists.newArrayList();
        list.add("6131c83d93944e2364df3aec");
        list.add("6131cb08c9622c250fa4e9e0");
        list.add("6131d491a31d4c49a6c9585b");
        list.add("6138659913395b34a6e51e67");
        repositoryTest.deleteAllBy_idIsIn(list);
        System.out.println("批量删除成功");
    }

  

  

  

  

  

  

免责声明:文章转载自《SpringData MongoDB》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android——处理Google play因WebView SSL Error Handler alerts被拒的问题3.2.3if语句的嵌套2下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MongoDB中的_id和ObjectId

ObjectId是"_id"的默认类型。它设计成轻量型的,不同的机器都能用全局唯一的同种方法方便地生成它。 这是MongoDB采用ObjectId,而不是其他比较常规的做法(比如自动增加的主键)的主要原因,因为在多个 服务器上同步自动增加主键值既费力还费时。MongoDB从一开始就设计用来作为分布式数据库,处理多个节 点是一个核心要求。后面会讲到O...

MongoDB自动删除过期数据--TTL索引

前序: 由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护本来想的是使用crontab写个脚本定时执行,但是看到Mongo本身就有自动删除过期数据的功能,所以还是用一下吧这个方法就是使用TTL索引,后续我再写一个脚本定时删除的任务介绍:TTL索引是MongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除,目前TT...

Linux Node 服务器基础布置流程

一、安装Node 1. 下载Linux二进制文件 可以下载(https://nodejs.org/zh-cn/download/)至本地电脑,再上传至服务器。  也可以直接在服务器上下载: wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz  2. 解压文件 假设压缩...

给MongoDB添加索引

用过数据库的都知道,数据库索引与书籍的索引类似,都是用来帮助快速查找的。   MongoDB的索引跟关系型数据库的索引几乎一致。       1. 索引的创建   mongodb采用ensureIndex来创建索引,如:   db.user.ensureIndex({"name":1})   表示在user集合的name键创建一个索引,这里的1表示索引创建...

Mongodb基础命令与用法

Mongodb基础命令与用法 查看版本号 [root@VM_0_12_centos bin]#./mongo -version MongoDB shell version v3.6.5 git version: a20ecd3e3a174162052ff99913bc2ca9a839d618 OpenSSL version: OpenSSL 1.0.1...

MongoDB查询(数组、内嵌文档)

转自:http://blog.csdn.net/congcong68/article/details/46919227 一、简介 我们上一篇介绍了db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段,我们今天介绍了对数组和内嵌文档的查询操作,尤其是对$elemMatch 同样可以用在...