国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

MongoDB從入門(mén)到精通、Springboot整合MongoDB

數(shù)據(jù)庫(kù) MongoDB
MongoDB的主要特點(diǎn)是它采用了文檔型數(shù)據(jù)存儲(chǔ)模型,允許開(kāi)發(fā)人員以非常自然的方式組織和存儲(chǔ)數(shù)據(jù)。當(dāng)一些表在MySQL查詢效率不高時(shí),可以轉(zhuǎn)為MongoDB,解決數(shù)據(jù)多查詢慢的情況!下面我們?cè)谠敿?xì)的了解一下吧!

一、前言

MongoDB是一款比較常見(jiàn)的NoSQL數(shù)據(jù)庫(kù),它以其靈活性、可伸縮性和高性能而聞名。

MongoDB的主要特點(diǎn)是它采用了文檔型數(shù)據(jù)存儲(chǔ)模型,允許開(kāi)發(fā)人員以非常自然的方式組織和存儲(chǔ)數(shù)據(jù)。

當(dāng)一些表在MySQL查詢效率不高時(shí),可以轉(zhuǎn)為MongoDB,解決數(shù)據(jù)多查詢慢的情況!

下面我們?cè)谠敿?xì)的了解一下吧!

二、非關(guān)系數(shù)據(jù)庫(kù)

說(shuō)到MongoDB,就順便說(shuō)一下非關(guān)系數(shù)據(jù)庫(kù)的常見(jiàn)的幾種:

類(lèi)型

名稱(chēng)

介紹

文檔數(shù)據(jù)庫(kù)

MongoDB

使用BSON(二進(jìn)制JSON)格式存儲(chǔ)數(shù)據(jù),適用于半結(jié)構(gòu)化數(shù)據(jù)和復(fù)雜查詢。

鍵值數(shù)據(jù)庫(kù)

Redis

用于緩存和快速數(shù)據(jù)訪問(wèn),支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),如字符串、列表、哈希等。

列式數(shù)據(jù)庫(kù)

ClickHouse

一個(gè)開(kāi)源的列式數(shù)據(jù)庫(kù)管理系統(tǒng),專(zhuān)門(mén)設(shè)計(jì)用于高性能的數(shù)據(jù)分析和OLAP(聯(lián)機(jī)分析處理)工作負(fù)載。

圖數(shù)據(jù)庫(kù)

Neo4j

用于存儲(chǔ)和查詢圖形數(shù)據(jù),如社交網(wǎng)絡(luò)關(guān)系、知識(shí)圖譜等。

搜索引擎

Elasticsearch

分布式搜索和分析引擎,適用于全文搜索、日志分析和實(shí)時(shí)數(shù)據(jù)分析。

三、MongoDB介紹

MongoDB是一個(gè)開(kāi)源的文檔型數(shù)據(jù)庫(kù)管理系統(tǒng),它屬于非關(guān)系型數(shù)據(jù)庫(kù)的一種,主要存儲(chǔ)半結(jié)構(gòu)化或無(wú)結(jié)構(gòu)化數(shù)據(jù),并提供靈活的數(shù)據(jù)建模和查詢能力。

MongoDB中的一條記錄就是一個(gè)文檔,它是由字段和值對(duì)組成的數(shù)據(jù)結(jié)構(gòu)。MongoDB 文檔類(lèi)似于 JSON 對(duì)象。字段的值可以包括其他文檔、數(shù)組和文檔數(shù)組。

使用文檔的優(yōu)點(diǎn)是:

  • 文檔對(duì)應(yīng)于許多編程語(yǔ)言中的本機(jī)數(shù)據(jù)類(lèi)型。
  • 嵌入式文檔和數(shù)組減少了對(duì)昂貴連接的需求。
  • 動(dòng)態(tài)模式支持流暢的多態(tài)性。

「我們來(lái)比對(duì)MySQL說(shuō)一下MongoDB的概念:」

最大的概念數(shù)據(jù)庫(kù)其實(shí)可以理解為一樣的,「只不過(guò)MySQL數(shù)據(jù)庫(kù)里放的是表,MongoDB里放得是文檔集合。」

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

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

四、特點(diǎn)

1、高性能

MongoDB 提供高性能的數(shù)據(jù)持久性。特別是下面兩個(gè)方面:

  • 對(duì)嵌入式數(shù)據(jù)模型的支持減少了數(shù)據(jù)庫(kù)系統(tǒng)上的 I/O 活動(dòng)。
  • 索引支持更快的查詢,并且可以包含嵌入文檔和數(shù)組中的鍵。

2、查詢接口

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

  • 復(fù)雜的數(shù)據(jù)聚合
  • 文本搜索和地理空間查詢

3、高可用性

MongoDB 的復(fù)制工具稱(chēng)為副本集,它提供:

  • 自動(dòng)故障轉(zhuǎn)移
  • 數(shù)據(jù)冗余

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

4、水平擴(kuò)展性

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

  • 分片將數(shù)據(jù)分布在機(jī)器集群上。
  • 從 3.4 開(kāi)始,MongoDB 支持基于分片鍵創(chuàng)建數(shù)據(jù)區(qū)域。

「在平衡集群中,MongoDB 將區(qū)域覆蓋的讀寫(xiě)操作僅定向到該區(qū)域內(nèi)的分片。」

5、支持多個(gè)存儲(chǔ)引擎

MongoDB 支持多種存儲(chǔ)引擎:

  • WiredTiger 存儲(chǔ)引擎(包括對(duì) 靜態(tài)加密的支持)。
  • 內(nèi)存存儲(chǔ)引擎。

「此外,MongoDB提供了可插拔的存儲(chǔ)引擎API,允許第三方為MongoDB開(kāi)發(fā)存儲(chǔ)引擎。」

五、應(yīng)用場(chǎng)景

  • 日志和審計(jì)數(shù)據(jù):MongoDB可以使用MongoDB存儲(chǔ)應(yīng)用程序日志、審計(jì)數(shù)據(jù)、操作日志、錯(cuò)誤日志等。
  • 產(chǎn)品和目錄信息:MongoDB適用于電子商務(wù)平臺(tái),用于存儲(chǔ)產(chǎn)品信息、價(jià)格、庫(kù)存以及目錄結(jié)構(gòu)。
  • 時(shí)間序列數(shù)據(jù):MongoDB可用于存儲(chǔ)時(shí)間序列數(shù)據(jù),如傳感器讀數(shù)、市場(chǎng)行情、監(jiān)控?cái)?shù)據(jù)和日志。
  • 實(shí)時(shí)事件數(shù)據(jù):實(shí)時(shí)事件數(shù)據(jù),如點(diǎn)擊流分析、用戶行為追蹤、社交媒體活動(dòng)等,可以在MongoDB中存儲(chǔ)和分析。
  • 地理信息數(shù)據(jù):如果你需要存儲(chǔ)地理信息數(shù)據(jù),如位置坐標(biāo)、地圖數(shù)據(jù)或地理空間信息,MongoDB的地理空間功能非常有用。
  • 會(huì)話數(shù)據(jù):MongoDB可以用于存儲(chǔ)Web應(yīng)用程序的會(huì)話數(shù)據(jù),以實(shí)現(xiàn)用戶身份驗(yàn)證和會(huì)話管理。
  • 用戶數(shù)據(jù):你可以使用MongoDB存儲(chǔ)用戶配置文件、個(gè)人信息、登錄憑據(jù)等用戶相關(guān)數(shù)據(jù)。
  • 大數(shù)據(jù)分析:MongoDB在大數(shù)據(jù)分析領(lǐng)域也有廣泛應(yīng)用,可以存儲(chǔ)和分析大規(guī)模數(shù)據(jù)集,支持實(shí)時(shí)分析和報(bào)告。
  • 博客和內(nèi)容管理:MongoDB適合存儲(chǔ)博客文章、評(píng)論、標(biāo)簽和多媒體內(nèi)容。

「當(dāng)然有些東西Redis也可以實(shí)現(xiàn),具體情況在根據(jù)公司情況進(jìn)行選擇,不要死板哈!」

六、安裝與Navicat連接

1、安裝

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

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

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

目前最新版本:7.0.1

運(yùn)行命令之前,需要在宿主機(jī)上創(chuàng)建文件夾用于掛載數(shù)據(jù),創(chuàng)建完文件夾記得給修改權(quán)限。

自己測(cè)試玩,可以不掛載,生產(chǎn)上也不太建議使用Docker安裝!

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

2、測(cè)試連接

我們沒(méi)有設(shè)置密碼,大家也可以設(shè)置一下!

剛剛創(chuàng)建的是一個(gè)空的數(shù)據(jù)庫(kù),需要我們自己創(chuàng)建一個(gè)數(shù)據(jù)庫(kù):

創(chuàng)建完成:

對(duì)于數(shù)據(jù)庫(kù)API操作大家可以看文檔來(lái)走一遍,這里就不具體演示,我們還是以在Springboot程序中來(lái)使用演示為主:

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

六、整合Springboot

1、導(dǎo)入依賴

<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、使用方式選擇

「這里說(shuō)一下有個(gè)特殊點(diǎn):」在 MongoDB 中,存儲(chǔ)在集合中的每個(gè)文檔都需要一個(gè)唯一的 _id字段作為主鍵。如果插入的文檔省略了該_id字段,MongoDB 驅(qū)動(dòng)程序會(huì)自動(dòng)為該字段生成一個(gè)_id,還會(huì)新增一個(gè)_class字段,來(lái)存在全類(lèi)名。如果有個(gè)字段為id,也會(huì)轉(zhuǎn)化為_(kāi)id!

這里分為兩種使用形式,一種是直接使用MongoTemplate,第二種就是extends MongoRepository<MyDocument, String>,來(lái)實(shí)現(xiàn)各種API。

這兩種方式?jīng)]有什么區(qū)別,不想寫(xiě)一個(gè)接口來(lái)繼承的話,直接使用template也是沒(méi)問(wèn)題的!

「制定了MongoRepository<CommonLog, String>就不需要每次操作的時(shí)候指定,像MongoTemplate就需要每次操作來(lái)指定是那個(gè)類(lèi)。」

我們以第一種來(lái)使用,當(dāng)然第二種的使用也給大家參考:

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

4、CRUD操作

簡(jiǎn)單的寫(xiě)在Controller里了

「新增如果數(shù)據(jù)庫(kù)中不存在文檔就會(huì)自動(dòng)新增并把記錄插入,還是很智能的!」

「新增:」

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("測(cè)試第一條記錄");
    commonLog.setRequestMethod("get");
    commonLog.setOperTime(new Date());
    return mongoTemplate.save(commonLog);
}

「查詢所有:」

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

「根據(jù)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);

}

「根據(jù)id刪除:」

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

七、總結(jié)

我們從非關(guān)系型數(shù)據(jù)庫(kù)為切入點(diǎn),引入了MongoDB,在進(jìn)行介紹,著重介紹了特點(diǎn),還有眾多應(yīng)用場(chǎng)景。

從安裝到連接,開(kāi)始了整合Springboot實(shí)戰(zhàn),帶大家進(jìn)行CRUD實(shí)戰(zhàn)操作。不知道大家有沒(méi)有對(duì)MongoDB有了進(jìn)一步的了解呢!

「趕快在項(xiàng)目中使用一下吧,有的時(shí)候不是需要這個(gè)技術(shù)來(lái)解決什么痛點(diǎn),有時(shí)就是自己想拓展一下自己的技術(shù)棧,當(dāng)然前提是在不影響系統(tǒng)的情況下哈!」

責(zé)任編輯:姜華 來(lái)源: 小王博客基地
相關(guān)推薦

2025-04-22 07:52:59

2025-04-27 01:33:23

MongoDBDocker容器

2025-05-14 08:15:00

MongoDB操作命令Docker

2022-06-10 08:17:52

HashMap鏈表紅黑樹(shù)

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

機(jī)器學(xué)習(xí)

2012-02-29 00:49:06

Linux學(xué)習(xí)

2025-02-24 10:07:10

2010-11-08 10:20:18

2022-09-02 15:11:18

開(kāi)發(fā)工具

2024-02-26 08:52:20

Python傳遞函數(shù)參數(shù)參數(shù)傳遞類(lèi)型

2020-06-18 14:39:42

MongoDB數(shù)據(jù)數(shù)據(jù)庫(kù)

2011-10-26 20:47:36

ssh 安全

2024-06-07 08:51:50

OpenPyXLPythonExcel文件

2009-03-19 13:36:53

SSH安全通道遠(yuǎn)程

2017-01-09 09:34:03

Docker容器傳統(tǒng)虛擬機(jī)

2025-03-21 14:31:14

NumPyPython數(shù)組

2009-07-03 18:49:00

網(wǎng)吧綜合布線
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

中文字幕在线观看亚洲| 人人妻人人澡人人爽欧美一区| 亚洲美女自拍偷拍| 九七久久人人| 轻轻色免费在线视频| 国产成人一区| 中文字幕av一区二区三区人| 亚洲国产精品精华液2区45| 久久久久久久激情视频| 九色porny自拍| 亚洲精品aⅴ| 综合色天天鬼久久鬼色| 欧美性视频在线| 国产青青视频| 久久看人人摘| 欧美日韩一区精品| 免费中文日韩| 成年男女免费视频网站不卡| 岛国av在线一区| 欧美激情奇米色| 免费人成短视频在线观看网站| 999精品在线| 国产精品jizz在线观看麻豆| 污视频网站在线| 久久久精品日韩| 最新国产精品亚洲| 可以看美女隐私的网站| 亚洲精品中文字幕乱码三区| 国内成+人亚洲| 亚洲mmav| 亚欧色一区w666天堂| 久久精品国产一区二区三区日韩 | 五月天综合婷婷| 国产在线精品不卡| 欧美噜噜久久久xxx| 色视频www在线播放国产| 亚洲天堂a在线| 欧美日韩综合久久| 香蕉成人app| 欧美一区三区| 欧美伊人精品成人久久综合97| 日本黄色片一级片| 波多野结衣91| 91精品国产综合久久久久久丝袜| 色噜噜狠狠狠综合欧洲色8| 久久伊人蜜桃av一区二区| 国产精品极品美女在线观看免费 | 日韩日韩日韩日韩日韩| 精品国内自产拍在线观看视频| 欧美精品九九99久久| 国产日产欧美视频| 99热这里只有精品8| 精品国模在线视频| jizzjizz在线观看| 国产亚洲欧美日韩日本| 欧美第一黄网| 国产传媒日韩欧美成人| 91亚洲精品视频| 欧美一级网址| 欧美一区二区三区在线观看| 国产黄色片大全| 在线观看三级视频欧美| 欧美日韩亚洲一| 亚洲高清免费在线| 日本三级免费观看| 三级影片在线观看欧美日韩一区二区 | 亚洲欧洲美洲av| 国产很黄免费观看久久| 激情五月开心婷婷| 色综合夜色一区| 第四色亚洲色图| 99精品欧美一区二区三区小说| 欧美日韩精品久久| 9久草视频在线视频精品| 在线视频观看你懂的| 久久综合视频网| 日本电影一区二区在线观看| 一区二区三区四区中文字幕| 久久国产亚洲精品无码| 麻豆免费精品视频| 欧美精品二区三区四区免费看视频 | 欧美日韩一区二区三区高清 | 欧美少妇一级片| 亚洲美女免费在线| missav|免费高清av在线看| 在线观看成人小视频| 欧美xxx性| 亚洲精品电影在线观看| 好吊日视频在线观看| 国内精品久久久久久影视8| 成人亚洲综合| 宅男66日本亚洲欧美视频| 91精品国产调教在线观看| 国产精品福利在线| 国内精品视频666| 亚洲黄色网址在线观看| 国产一二三区在线视频| av在线一区二区| h视频在线观看免费| 久久久久日韩精品久久久男男| 久久综合网络一区二区| 日本成人三级电影网站| 日韩香蕉视频| bt电影在线| 亚洲电影在线免费观看| 国产成人福利夜色影视| 欧美凹凸一区二区三区视频| 亚洲一区二区三区影院| 一级在线视频| 91精品国产91久久久久久不卡| 精品成人自拍视频| 日本欧美中文字幕| 免费观看久久av| 国产日韩精品视频| 国产精品av一区二区| 日本一区高清在线视频| 三级久久三级久久| 中文在线有码| 在线视频欧美区| 全国精品免费看| 91久久久久久国产精品| 国产精品嫩草99a| 成人频在线观看| 欧美视频中文字幕| 成人精品电影| 99热免费在线观看| 亚洲综合无码一区二区| 国产1区2区3区在线| 日本久久久a级免费| 国产日韩影视精品| 伊人久久大香| 国产精品久久久久久久久久免费| 国内精品福利| 亚洲啊啊啊啊啊| 国产免费观看久久| 欧美性猛交7777777| 欧美在线免费看| 欧美激情日韩| 国产污污在线观看| 国产精品久久综合av爱欲tv| 亚洲精品免费在线播放| 精品久久影院| 中文字幕在线观看第一页| 国产在线高清精品| 日本丶国产丶欧美色综合| rebdb初裸写真在线观看| 欧美精品123| 精品夜色国产国偷在线| 蜜桃一区av| 蜜桃传媒av| 欧美三区在线观看| 久久精品官网| 性欧美1819sex性高清| 黄色片久久久久| 国产99在线|中文| 亚洲va欧美va天堂v国产综合| 欧美午夜在线| 牛牛精品一区二区| 国产精自产拍久久久久久| 日韩和欧美一区二区三区| 另类视频在线| 国产精品福利观看| 黑人巨大精品欧美一区二区一视频| 国产一二三在线| 怡红院av亚洲一区二区三区h| 午夜精品免费视频| 免费xxxx性欧美18vr| 污视频网站在线看| 亚洲欧美日韩另类| 亚洲不卡av不卡一区二区| www.91在线| 艳母动漫在线观看| 久久男人av资源网站| 欧美特黄级在线| aiai久久| 最新黄色av网站| 久久男人的天堂| 一本大道久久a久久综合| 久久国产精品免费| 在线播放日本| 国产成人av网| 99精品国产视频| 狠狠综合久久av一区二区蜜桃 | 亚洲mv在线观看| 久久电影网电视剧免费观看| 天堂va欧美ⅴa亚洲va一国产| 亚洲日本伦理| 久久综合亚洲精品| 欧美群妇大交群中文字幕| 欧美精品国产白浆久久久久| 中文字幕在线一二| 大桥未久一区二区三区| 国产精品久久久久久久久久99 | 国产一级片在线| 久久免费精品视频| 欧美日韩中文国产| 久久只精品国产| 欧美亚洲三区| 天堂中文а√在线| 国内自拍视频网|