SpringBoot整合MongoDB增删改查

1.引入依赖

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

2.yml配置

# mongodb 没有开启任何安全协议
# mongodb(协议)://121.5.167.13(主机):27017(端口)/baizhi(库名)
spring.data.mongodb.uri=mongodb://121.5.167.13:27017/baizhi


# mongodb 存在密码
#spring.data.mongodb.host=tx.chenyn.cn
#spring.data.mongodb.port=27017
#spring.data.mongodb.database=baizhi
#spring.data.mongodb.username=root
#spring.data.mongodb.password=root

3.相关注解

  • @Document

    • 修饰范围: 用在类上

    • 作用: 用来映射这个类的一个对象为 mongo 中一条文档数据

    • 属性:(value 、collection )用来指定操作的集合名称

  • @Id

    • 修饰范围: 用在成员变量、方法上

    • 作用: 用来将成员变量的值映射为文档的_id 的值

  • @Field

    • 修饰范围: 用在成员变量、方法上

    • 作用: 用来将成员变量以及值映射为文档中一个key、value对

    • 属性: ( name,value)用来指定在文档中 key 的名称,默认为成员变量名

  • @Transient

    • 修饰范围: 用在成员变量、方法上

    • 作用 : 用来指定改成员变量,不参与文档的序列化

@Data
@Document("user")
public class User {

    @Id
    private String id;

    private String name;

    private Integer age;

}

例如上面这个实体类

在操作时只需要注入

MongoTemplate 对象即可
 @Autowired(required = false)
    private MongoTemplate mongoTemplate;

4.查询

@Test
public void testQuery(){
  //基于 id 查询
  template.findById("1",User.class);

  //查询所有
  template.findAll(User.class);
  template.find(new Query(),User.class);

  //等值查询
  template.find(Query.query(Criteria.where("name").is("编程不良人")), 
               User.class);

  // > gt  < lt  >= gte  <= lte
  template.find(Query.query(Criteria.where("age").lt(25)),
                User.class);
  template.find(Query.query(Criteria.where("age").gt(25)),
                User.class);
  template.find(Query.query(Criteria.where("age").lte(25)),
                User.class);
  template.find(Query.query(Criteria.where("age").gte(25)),
                User.class);

  //and
  template.find(Query.query(Criteria.where("name").is("编程不良人")
                            .and("age").is(23)),User.class);

  //or
  Criteria criteria = new Criteria()
    .orOperator(Criteria.where("name").is("编程不良人_1"),
     Criteria.where("name").is("编程不良人_2"));
  template.find(Query.query(criteria), User.class);

  //and or
  Criteria criteria1 = new Criteria()
    .and("age").is(23)
    .orOperator(
    Criteria.where("name").is("编程不良人_1"),
    Criteria.where("name").is("编程不良人_2"));
  template.find(Query.query(criteria1), User.class);

  //sort 排序
  Query query = new Query();
  query.with(Sort.by(Sort.Order.desc("age")));//desc 降序  asc 升序
  template.find(query, User.class);


  //skip limit 分页
  Query queryPage = new Query();
  queryPage.with(Sort.by(Sort.Order.desc("age")))//desc 降序  asc 升序
    .skip(0) //起始条数
    .limit(4); //每页显示记录数
  template.find(queryPage, User.class);


  //count 总条数
  template.count(new Query(), User.class);

  //distinct 去重
  //参数 1:查询条件 参数 2: 去重字段  参数 3: 操作集合  参数 4: 返回类型
  template.findDistinct(new Query(), "name", 
                        User.class, String.class);
  
  //使用 json 字符串方式查询 
        Query query = new BasicQuery(
          "{$or:[{name:'编程不良人'},{name:'徐凤年'}]}", 
          "{name:0}");

  template.find(query, User.class);
}

5.新增

  //新增
    @Test
    public void testInsert(){
        User user=new User();
        user.setName("小猫");
        user.setAge(25);
        mongoTemplate.insert(user);
    }

6.修改
 

    @Test
    public void update(){
        Query query = Query.query(Criteria.where("name").is("小猫"));
        //2.更新内容
        Update update = new Update();
        update.set("name","小狗");
        mongoTemplate.updateFirst(query,update,User.class);
    }

7.删除

//删除
    @Test
    public void delete(){
        Query query = Query.query(Criteria.where("name").is("小狗"));
        mongoTemplate.remove(query,User.class);
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值