當前位置:首頁 > IT技術 > 數(shù)據(jù)庫 > 正文

SpringBoot 中 MongoDB 的簡單使用
2021-09-09 09:55:31

一、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;

/**
 * 新增數(shù)據(jù)示例,jl_gps 集合沒有會自動創(chuàng)建
 */
public void testSave() {
    BJlGps jlGps = new BJlGps();
    ...
    mongoTemplate.save(x, "jl_gps")
}

/**
 * 查詢數(shù)據(jù)示例
 */
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);
    
    // 執(zhí)行查詢,反饋結果集
    list = mongoTemplate.find(query, TestEntity.class, "test");
}

二、問題補充(問題提出者:王)

問題一:使用 MongoTemplate 查詢數(shù)據(jù)第一次會比較慢

原因:第一次查詢會先建立連接,導致查詢慢
解決方案:在項目啟動時建立連接
@Component
public class MongoConnTask implements ApplicationRunner {
    /**
     * Springboot啟動時,注入 MongoTemplate ,即可創(chuàng)建連接
     */
    @Resource
    private MongoTemplate mongoTemplate;
    
    
    @Override
    public void run(ApplicationArguments args) throws Exception {
        
    }
}

問題二:可視化工具中查看時間相關數(shù)據(jù),發(fā)現(xiàn)與存進去的時間少 8 小時

原因:MongoDB 存儲時間為標準時間,UTC +0:00。中國標準時間為 UTC +8:00。
解決方案:無需解決

MongoTemplate 在取數(shù)據(jù)時,會自動加 8H,保證存取一致。

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >