• SpringBoot 中 MongoDB 的简单使用


    一、SpringBoot 中 MongoDB 的简单使用

    (1)pom 依赖
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-data-mongodb</artifactId>
    </dependency>
    
    (2)yml配置
    spring:
      data:
        mongodb:
          uri: mongodb://ydt:ydtnb@123.123.123.123:27017/ydt?authSource=ydt
    
    (3)代码
    @Resource
    private MongoTemplate mongoTemplate;
    
    /**
     * 新增数据示例,jl_gps 集合没有会自动创建
     */
    public void testSave() {
        BJlGps jlGps = new BJlGps();
        ...
        mongoTemplate.save(x, "jl_gps")
    }
    
    /**
     * 查询数据示例
     */
    public void testQuery() {
        List<TestEntity> list = new ArrayList();
        
        Query query = new Query();
        Criteria criteria = new Criteria();
        
        String dwid = getDwid();
        
        // 模糊查询
        criteria.where("dwid").regex("^.*" + dwid + ".*$");
        /* 精确查询 */
        if (StringUtil.isNotEmpty(type)) {
            criteria.and("type").is(type);
        }
        /* 范围查询 */
        if (StringUtil.isNotEmpty(sDate) && StringUtil.isNotEmpty(eDate)) {
            criteria.and("dt")
                .gte(DateUtil.strToDateLong(sDate))
                .lt(DateUtil.strToDateLong(eDate));
        }
        query.addCriteria(criteria);
        
        // 执行查询,反馈结果集
        list = mongoTemplate.find(query, TestEntity.class, "test");
    }
    

    二、问题补充(问题提出者:王)

    问题一:使用 MongoTemplate 查询数据第一次会比较慢

    原因:第一次查询会先建立连接,导致查询慢
    解决方案:在项目启动时建立连接
    @Component
    public class MongoConnTask implements ApplicationRunner {
        /**
         * Springboot启动时,注入 MongoTemplate ,即可创建连接
         */
        @Resource
        private MongoTemplate mongoTemplate;
        
        
        @Override
        public void run(ApplicationArguments args) throws Exception {
            
        }
    }
    

    问题二:可视化工具中查看时间相关数据,发现与存进去的时间少 8 小时

    原因:MongoDB 存储时间为标准时间,UTC +0:00。中国标准时间为 UTC +8:00。
    解决方案:无需解决

    MongoTemplate 在取数据时,会自动加 8H,保证存取一致。

  • 相关阅读:
    hihocoder 1038
    hihocoder 1039
    poj 2774
    bzoj 4690&&4602
    poj 2417
    STL
    poj 1026
    poj 1064
    poj 1861(prim)
    poj 1129
  • 原文地址:https://www.cnblogs.com/lei01/p/15245396.html
Copyright © 2020-2023  润新知