国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - MongoDB - MongoDB從入門到精通、Springboot整合MongoDB

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

2023-10-14 09:05未知服務器之家 MongoDB

一、前言 MongoDB是一款比較常見的NoSQL數據庫,它以其靈活性、可伸縮性和高性能而聞名。 MongoDB的主要特點是它采用了文檔型數據存儲模型,允許開發人員以非常自然的方式組織和存儲數據。 當一些表在MySQL查詢效率不高時,可以

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

一、前言

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

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

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

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

二、非關系數據庫

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

類型

名稱

介紹

文檔數據庫

MongoDB

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

鍵值數據庫

Redis

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

列式數據庫

ClickHouse

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

圖數據庫

Neo4j

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

搜索引擎

Elasticsearch

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

三、MongoDB介紹

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

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

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

使用文檔的優點是:

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

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

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

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

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

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

四、特點

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、測試連接

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

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

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

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

創建完成:

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

對于數據庫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!

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

這里分為兩種使用形式,一種是直接使用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);
}

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

「查詢所有:」

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

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

「根據ID查詢:」

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

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

「兩種更新操作:」

@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);

}

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

「根據id刪除:」

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

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

七、總結

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

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

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

延伸 · 閱讀

精彩推薦
  • MongoDBMongoDB安裝圖文教程

    MongoDB安裝圖文教程

    這篇文章主要為大家詳細介紹了MongoDB安裝圖文教程,分為兩大部分為大家介紹下載MongoDB和安裝MongoDB的方法,感興趣的小伙伴們可以參考一下 ...

    Yangyi.He6132020-05-07
  • MongoDB遷移sqlserver數據到MongoDb的方法

    遷移sqlserver數據到MongoDb的方法

    這篇文章主要介紹了遷移sqlserver數據到MongoDb的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下...

    聽楓xl9682021-01-03
  • MongoDBMongodb實現定時備份與恢復的方法教程

    Mongodb實現定時備份與恢復的方法教程

    這篇文章主要給大家介紹了Mongodb實現定時備份與恢復的方法教程,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面...

    chenjsh364522020-05-13
  • MongoDBMongoDB中javascript腳本編程簡介和入門實例

    MongoDB中javascript腳本編程簡介和入門實例

    作為一個數據庫,MongoDB有一個很大的優勢——它使用js管理數據庫,所以也能夠使用js腳本進行復雜的管理——這種方法非常靈活 ...

    MongoDB教程網6982020-04-24
  • MongoDBMongoDB憑什么躋身數據庫排行前五

    MongoDB憑什么躋身數據庫排行前五

    MongoDB以比去年同期超出65.96分的成績繼續雄踞榜單前五,這個增幅在全榜僅次于PostgreSQL的77.99,而其相對于4月份的6.10分的增長也是僅次于微軟SQL Server排名...

    孫浩峰3892020-05-22
  • MongoDBmongodb基本命令實例小結

    mongodb基本命令實例小結

    這篇文章主要介紹了mongodb基本命令,結合實例形式總結分析了MongoDB數據庫切換、查看、刪除、查詢等基本命令用法與操作注意事項,需要的朋友可以參考下...

    dawn-liu3652020-05-26
  • MongoDBMongoDB 內存使用情況分析

    MongoDB 內存使用情況分析

    都說 MongoDB 是個內存大戶,但是怎么知道它到底用了多少內存呢...

    MongoDB教程網10002020-09-29
  • MongoDB分布式文檔存儲數據庫之MongoDB分片集群的問題

    分布式文檔存儲數據庫之MongoDB分片集群的問題

    這篇文章主要介紹了分布式文檔存儲數據庫之MongoDB分片集群的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋...

    Linux-18743072020-12-20
主站蜘蛛池模板: 国产精品一二 | 日本久久久久 | 一级在线看 | 亚洲国产精品欧美一二99 | 成人精品国产免费网站 | 亚洲精品久久久久久久久久久 | 国产日韩欧美精品 | 欧洲精品久久久 | 久久99精品久久久久久园产越南 | 色花av| 中文字幕天堂在线 | 免费在线污视频 | 国产成人精品一区二区三区四区 | 黄片毛片免费观看 | 国产精品精品久久久 | 欧美黄视频 | 欧美成人免费看 | 国产黄色免费网站 | 久久久久久久国产毛片 | 国产精品视频 | 国语毛片 | 成人av高清在线 | 成人网免费看 | 免费黄色网页 | 视频一区二区国产 | 日韩欧美在线一区 | 综合久久亚洲 | 国产丝袜一区 | 都市激情国产 | 一区二区在线不卡 | 免费一及片 | 欧美三级网址 | 啊v视频| 天天操天天操 | 一级视频网站 | 日本免费在线 | 美女一区| 国产福利在线播放 | 一区二区在线电影 | 亚洲精品专区 | 黄色在线观看视频 |