成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

MongoDB從入門到精通、Springboot整合MongoDB

數據庫 MongoDB
MongoDB的主要特點是它采用了文檔型數據存儲模型,允許開發人員以非常自然的方式組織和存儲數據。當一些表在MySQL查詢效率不高時,可以轉為MongoDB,解決數據多查詢慢的情況!下面我們在詳細的了解一下吧!

一、前言

MongoDB是一款比較常見的NoSQL數據庫,它以其靈活性、可伸縮性和高性能而聞名。

MongoDB的主要特點是它采用了文檔型數據存儲模型,允許開發人員以非常自然的方式組織和存儲數據。

當一些表在MySQL查詢效率不高時,可以轉為MongoDB,解決數據多查詢慢的情況!

下面我們在詳細的了解一下吧!

二、非關系數據庫

說到MongoDB,就順便說一下非關系數據庫的常見的幾種:

類型

名稱

介紹

文檔數據庫

MongoDB

使用BSON(二進制JSON)格式存儲數據,適用于半結構化數據和復雜查詢。

鍵值數據庫

Redis

用于緩存和快速數據訪問,支持復雜的數據結構,如字符串、列表、哈希等。

列式數據庫

ClickHouse

一個開源的列式數據庫管理系統,專門設計用于高性能的數據分析和OLAP(聯機分析處理)工作負載。

圖數據庫

Neo4j

用于存儲和查詢圖形數據,如社交網絡關系、知識圖譜等。

搜索引擎

Elasticsearch

分布式搜索和分析引擎,適用于全文搜索、日志分析和實時數據分析。

三、MongoDB介紹

MongoDB是一個開源的文檔型數據庫管理系統,它屬于非關系型數據庫的一種,主要存儲半結構化或無結構化數據,并提供靈活的數據建模和查詢能力。

MongoDB中的一條記錄就是一個文檔,它是由字段和值對組成的數據結構。MongoDB 文檔類似于 JSON 對象。字段的值可以包括其他文檔、數組和文檔數組。

使用文檔的優點是:

  • 文檔對應于許多編程語言中的本機數據類型。
  • 嵌入式文檔和數組減少了對昂貴連接的需求。
  • 動態模式支持流暢的多態性。

「我們來比對MySQL說一下MongoDB的概念:」

最大的概念數據庫其實可以理解為一樣的,「只不過MySQL數據庫里放的是表,MongoDB里放得是文檔集合。」

所以:表(Table)與文檔集合(Collection)可以理解類似的,存儲的形式不一樣

在細化的概念就是:行(Row):行是表中的記錄,它們包含特定的字段和值文檔(Document):文檔是JSON格式的數據,它們包含了數據字段和相應的值

四、特點

1、高性能

MongoDB 提供高性能的數據持久性。特別是下面兩個方面:

  • 對嵌入式數據模型的支持減少了數據庫系統上的 I/O 活動。
  • 索引支持更快的查詢,并且可以包含嵌入文檔和數組中的鍵。

2、查詢接口

MongoDB 查詢 API 支持讀寫操作 (CRUD)以及:

  • 復雜的數據聚合
  • 文本搜索和地理空間查詢

3、高可用性

MongoDB 的復制工具稱為副本集,它提供:

  • 自動故障轉移
  • 數據冗余

「副本集是一組維護相同數據集的 MongoDB 服務器,提供冗余并提高數據可用性。」

4、水平擴展性

MongoDB 提供水平可擴展性作為其核心 功能的一部分:

  • 分片將數據分布在機器集群上。
  • 從 3.4 開始,MongoDB 支持基于分片鍵創建數據區域。

「在平衡集群中,MongoDB 將區域覆蓋的讀寫操作僅定向到該區域內的分片。」

5、支持多個存儲引擎

MongoDB 支持多種存儲引擎:

  • WiredTiger 存儲引擎(包括對 靜態加密的支持)。
  • 內存存儲引擎。

「此外,MongoDB提供了可插拔的存儲引擎API,允許第三方為MongoDB開發存儲引擎。」

五、應用場景

  • 日志和審計數據:MongoDB可以使用MongoDB存儲應用程序日志、審計數據、操作日志、錯誤日志等。
  • 產品和目錄信息:MongoDB適用于電子商務平臺,用于存儲產品信息、價格、庫存以及目錄結構。
  • 時間序列數據:MongoDB可用于存儲時間序列數據,如傳感器讀數、市場行情、監控數據和日志。
  • 實時事件數據:實時事件數據,如點擊流分析、用戶行為追蹤、社交媒體活動等,可以在MongoDB中存儲和分析。
  • 地理信息數據:如果你需要存儲地理信息數據,如位置坐標、地圖數據或地理空間信息,MongoDB的地理空間功能非常有用。
  • 會話數據:MongoDB可以用于存儲Web應用程序的會話數據,以實現用戶身份驗證和會話管理。
  • 用戶數據:你可以使用MongoDB存儲用戶配置文件、個人信息、登錄憑據等用戶相關數據。
  • 大數據分析:MongoDB在大數據分析領域也有廣泛應用,可以存儲和分析大規模數據集,支持實時分析和報告。
  • 博客和內容管理:MongoDB適合存儲博客文章、評論、標簽和多媒體內容。

「當然有些東西Redis也可以實現,具體情況在根據公司情況進行選擇,不要死板哈!」

六、安裝與Navicat連接

1、安裝

本次使用Docker安裝比較省心,當然也可以下載客戶端裝在Linux中,不太建議裝在Windows中。

不想裝虛擬機的話,裝也是可以的,就不帶大家安裝了,直接給地址自行下載哈:

mongodb下載地址:https://www.mongodb.com/try/download/community

目前最新版本:7.0.1

運行命令之前,需要在宿主機上創建文件夾用于掛載數據,創建完文件夾記得給修改權限。

自己測試玩,可以不掛載,生產上也不太建議使用Docker安裝!

docker run -d  --name mongodb  --restart always -p 27017:27017 -v /data/mongo:/data/db mongo

2、測試連接

我們沒有設置密碼,大家也可以設置一下!

剛剛創建的是一個空的數據庫,需要我們自己創建一個數據庫:

創建完成:

對于數據庫API操作大家可以看文檔來走一遍,這里就不具體演示,我們還是以在Springboot程序中來使用演示為主:

MongoDB API文檔:https://www.mongodb.com/docs/manual/tutorial/insert-documents/

六、整合Springboot

1、導入依賴

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

2、配置yml

server:
  port: 8086
spring:
  data:
    mongodb:
      host: 192.168.239.130
      port: 27017
      database: test

3、使用方式選擇

「這里說一下有個特殊點:」在 MongoDB 中,存儲在集合中的每個文檔都需要一個唯一的 _id字段作為主鍵。如果插入的文檔省略了該_id字段,MongoDB 驅動程序會自動為該字段生成一個_id,還會新增一個_class字段,來存在全類名。如果有個字段為id,也會轉化為_id!

這里分為兩種使用形式,一種是直接使用MongoTemplate,第二種就是extends MongoRepository<MyDocument, String>,來實現各種API。

這兩種方式沒有什么區別,不想寫一個接口來繼承的話,直接使用template也是沒問題的!

「制定了MongoRepository<CommonLog, String>就不需要每次操作的時候指定,像MongoTemplate就需要每次操作來指定是那個類。」

我們以第一種來使用,當然第二種的使用也給大家參考:

public interface CommonLogRepository extends MongoRepository<CommonLog, String> {
}

4、CRUD操作

簡單的寫在Controller里了

「新增如果數據庫中不存在文檔就會自動新增并把記錄插入,還是很智能的!」

「新增:」

private final MongoTemplate mongoTemplate;

@PostMapping("saveCommonLog")
public CommonLog saveCommonLog() {
    CommonLog commonLog = new CommonLog();
    commonLog.setOperIp("127.0.0.1");
    commonLog.setBusinessType(1);
    commonLog.setOperUrl("https://baidu.com");
    commonLog.setOperName("我是新增");
    commonLog.setTitle("測試第一條記錄");
    commonLog.setRequestMethod("get");
    commonLog.setOperTime(new Date());
    return mongoTemplate.save(commonLog);
}

「查詢所有:」

@GetMapping("getAllCommonLogs")
public List<CommonLog> getAllCommonLogs() {
    return mongoTemplate.findAll(CommonLog.class);
}

「根據ID查詢:」

@GetMapping("getCommonLogById")
public CommonLog getCommonLogById(@RequestParam String id) {
    return mongoTemplate.findById(id, CommonLog.class);
}

「兩種更新操作:」

@PostMapping("/updateCommonLog")
public void updateCommonLog(){
 // 第一種
    CommonLog commonLog = mongoTemplate.findById("65151ce0112fec57886da00c", CommonLog.class);
    if (commonLog != null) {
        commonLog.setOperName("我修改了你");
        mongoTemplate.save(commonLog);
    }
 // 第二種
    Query query = Query.query(Criteria.where("id").is("65151d8f112fec57886da00d"));
    Update update = new Update().set("requestMethod", "update");
    mongoTemplate.updateFirst(query, update, CommonLog.class);

}

「根據id刪除:」

@DeleteMapping("deleteCommonLogById")
public void deleteCommonLogById(@RequestParam String id) {
    mongoTemplate.remove(Query.query(Criteria.where("id").is(id)), CommonLog.class);
}

七、總結

我們從非關系型數據庫為切入點,引入了MongoDB,在進行介紹,著重介紹了特點,還有眾多應用場景。

從安裝到連接,開始了整合Springboot實戰,帶大家進行CRUD實戰操作。不知道大家有沒有對MongoDB有了進一步的了解呢!

「趕快在項目中使用一下吧,有的時候不是需要這個技術來解決什么痛點,有時就是自己想拓展一下自己的技術棧,當然前提是在不影響系統的情況下哈!」

責任編輯:姜華 來源: 小王博客基地
相關推薦

2025-04-22 07:52:59

2025-04-27 01:33:23

MongoDBDocker容器

2025-05-14 08:15:00

MongoDB操作命令Docker

2010-02-06 15:31:18

ibmdwAndroid

2009-07-22 14:55:16

ibmdwAndroid

2016-12-08 22:39:40

Android

2017-05-09 08:48:44

機器學習

2022-06-10 08:17:52

HashMap鏈表紅黑樹

2012-02-29 00:49:06

Linux學習

2025-02-24 10:07:10

2010-11-08 10:20:18

2024-02-26 08:52:20

Python傳遞函數參數參數傳遞類型

2022-09-02 15:11:18

開發工具

2020-06-18 14:39:42

MongoDB數據數據庫

2009-07-03 18:49:00

網吧綜合布線

2009-03-19 13:36:53

SSH安全通道遠程

2011-10-26 20:47:36

ssh 安全

2024-06-07 08:51:50

OpenPyXLPythonExcel文件

2025-03-21 14:31:14

NumPyPython數組

2017-01-09 09:34:03

Docker容器傳統虛擬機
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日韩成人一区二区 | 国产91久久久久久久免费 | 伊人av在线播放 | 亚洲国产成人精品女人久久久 | 国产一区二区三区四区五区3d | 美女二区 | 亚洲品质自拍视频 | 影音先锋中文字幕在线观看 | 精品国产乱码久久久久久丨区2区 | 精品毛片在线观看 | 中文字幕在线精品 | 亚洲综合视频 | 国产精彩视频一区 | 欧美精品一区二区三区一线天视频 | 美女福利网站 | 国产美女永久免费无遮挡 | 日韩精品免费 | japan25hdxxxx日本| 色视频www在线播放国产人成 | 精品三级在线观看 | 毛片综合 | 嫩草视频在线免费观看 | 国产精品久久久久久久久久久久久久 | 日本午夜在线视频 | 人人操日日干 | 91精品国产91久久久久久不卞 | 日本黄色片免费在线观看 | 亚洲精品在线免费看 | 日韩在线欧美 | 美女天天干天天操 | 国产高清免费视频 | 久久精品视频9 | 无码一区二区三区视频 | 国产精品久久久久久久久久久久冷 | 亚洲36d大奶网 | 波多野结衣在线观看一区二区三区 | 国产一区欧美 | 国产日韩av一区二区 | 国产一级片精品 | 日本黄色片免费在线观看 | 在线国产精品一区 |