mongoDB Springboot使用mongoDB

1.数据库中的数据

在这里插入图片描述

2.pom文件添加架包

springboot版本 2.2.2.RELEASE

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

3.yml文件设置mongoDB数据库的地址信息

spring:
  data:
    mongodb:
      host: 127.0.0.1
      port: 27017
      database: myTest

4.使用MongoTemplate来进行数据库操作

package com.kittlen.cloud.controller;

import com.kittlen.cloud.entities.People;
import com.mongodb.client.result.UpdateResult;
import entities.Result;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
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.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @author kittlen
 * @version 1.0
 * @date 2021/9/15 0015
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @Resource
    MongoTemplate mongoTemplate;

    /**
     * 如果不指定collectionName的话默认使用传入的对象的类名(首字母小写-驼峰命名)
     *
     * @return
     */
    @RequestMapping("/add")
    public Result add() {
        People people = new People();
        people.setName("王五");
        people.setAge("11");
        People insert = mongoTemplate.insert(people, "mytable");
        return Result.ok(insert);
    }

    @RequestMapping("/update")
    public Result update() {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is("王五").and("age").is("11"));
        Update update = new Update();
        update.set("name", "王五");
        update.set("age", "12");
        UpdateResult updateResult = mongoTemplate.updateFirst(query, update, "mytable");
        return Result.ok(updateResult.getModifiedCount());
    }

    @RequestMapping("/remove")
    public Result remove() {
        Query query = new Query();
        query.addCriteria(Criteria.where("name").is("王五").and("age").is("11"));
//        DeleteResult mytable = mongoTemplate.remove(query, "mytable");
        List<Object> mytable = mongoTemplate.findAllAndRemove(query, "mytable");
        return Result.ok(mytable);
    }

    /**
     * 获取数据库中的所有文档集合
     *
     * @return
     */
    @RequestMapping("/collectionNames")
    public Result collectionNames() {
        Set<String> set = mongoTemplate.getCollectionNames();
        return Result.ok(set);
    }

    /**
     * 根据条件查询一条数据
     *
     * @return
     */
    @RequestMapping("/findOne")
    public Result findOne() {
        Query query = new Query();
        query.addCriteria(Criteria.where("age").is("11"));
        People people = mongoTemplate.findOne(query, People.class, "mytable");
        return Result.ok(people);
    }

    /**
     * 根据条件查询列表数据
     *
     * @return
     */
    @RequestMapping("/find")
    public Result find() {
        Query query = new Query();
        query.addCriteria(Criteria.where("age").is("11"));
        return Result.ok(mongoTemplate.find(query, People.class, "mytable"));
    }

	//db.mytable.aggregate({ "$match" : { "age" : { "$lt" : 100, "$gte" : 11}}}, { "$group" : { "_id" : "$age", "ageSum" : { "$sum" : "$age"}}})
    @RequestMapping("/aggregate")
    public Result aggregate() {
        Criteria cri = new Criteria("age").lt(100).gte(11);
        Aggregation ag = Aggregation.newAggregation(
                Aggregation.match(cri),
                Aggregation.group("age").sum("age").as("ageSum")
        );
        AggregationResults<Map> mytable = mongoTemplate.aggregate(ag, "mytable", Map.class);
        return Result.ok(mytable.getMappedResults());
    }

}

备注

添加的数据多了个_class字段

修改MappingMongoConverter

package com.kittlen.cloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.convert.CustomConversions;
import org.springframework.data.mongodb.MongoDbFactory;
import org.springframework.data.mongodb.core.convert.DbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;

/**
 * @author kittlen
 * @version 1.0
 * @date 2021/9/15 0015
 */
@Configuration
public class MongodbConfig {

    /**
     * 用于删除添加的数据中多添加的_class字段
     *
     * @param factory
     * @param context
     * @param conversions
     * @return
     */
    @Bean
    public MappingMongoConverter mappingMongoConverter(MongoDbFactory factory,
                                                       MongoMappingContext context, CustomConversions conversions) {
        DbRefResolver dbRefResolver = new DefaultDbRefResolver(factory);
        MappingMongoConverter mappingConverter = new MappingMongoConverter(dbRefResolver, context);
        try {
            mappingMongoConverter.setCustomConversions(beanFactory.getBean(MongoCustomConversions.class));
        } catch (NoSuchBeanDefinitionException ignore) {
            throw ignore;
        }
        // remove _class field
        mappingConverter.setTypeMapper(new DefaultMongoTypeMapper(null));
        mappingConverter.setCustomConversions(conversions);
        return mappingConverter;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值