最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MongoDB快速入門及其SpringBoot實戰(zhàn)教程

 更新時間:2023年12月08日 14:49:35   作者:積雨輞川  
MongoDB是一個開源、高性能、無模式的文檔型數(shù)據(jù)庫,當(dāng)初的設(shè)計就是用于簡化開發(fā)和方便擴(kuò)展,是NoSQL數(shù)據(jù)庫產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門及其SpringBoot實戰(zhàn),感興趣的朋友一起看看吧

MongoDB快速入門及其SpringBoot實戰(zhàn)

MongoDB簡介

MongoDB 是一個基于分布式文件存儲的數(shù)據(jù)庫。由 C++ 語言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。

MongoDB是一個開源、高性能、無模式的文檔型數(shù)據(jù)庫,當(dāng)初的設(shè)計就是用于簡化開發(fā)和方便擴(kuò)展,是NoSQL數(shù)據(jù)庫產(chǎn)品中的一種。是最像關(guān)系型數(shù)據(jù)庫(MySQL)的非關(guān)系型數(shù)據(jù)庫。

它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,所以它既可以存儲比較復(fù)雜的數(shù)據(jù)類型,又相當(dāng)?shù)撵`活。

MongoDB概念解析

SQL術(shù)語/概念MongoDB術(shù)語/概念解釋/說明
databasedatabase數(shù)據(jù)庫
tablecollection數(shù)據(jù)庫表/集合
rowdocument數(shù)據(jù)記錄行/文檔
columnfield數(shù)據(jù)字段/域
indexindex索引
table joins表連接,MongoDB不支持
primary keyprimary key主鍵,MongoDB自動將_id字段設(shè)置為主鍵

SQL與MongoDB數(shù)據(jù)存儲形式對比如下圖所示:

MongoDB數(shù)據(jù)類型

數(shù)據(jù)類型描述
String字符串。存儲數(shù)據(jù)常用的數(shù)據(jù)類型。在 MongoDB 中,UTF-8 編碼的字符串才是合法的。
Integer整型數(shù)值。用于存儲數(shù)值。根據(jù)你所采用的服務(wù)器,可分為 32 位或 64 位。
Boolean布爾值。用于存儲布爾值(真/假)。
Double雙精度浮點值。用于存儲浮點值。
Min/Max keys將一個值與 BSON(二進(jìn)制的 JSON)元素的最低值和最高值相對比。
Array用于將數(shù)組或列表或多個值存儲為一個鍵。
Timestamp時間戳。記錄文檔修改或添加的具體時間。
Object用于內(nèi)嵌文檔。
Null用于創(chuàng)建空值。
Symbol符號。該數(shù)據(jù)類型基本上等同于字符串類型,但不同的是,它一般用于采用特殊符號類型的語言。
Date日期時間。用 UNIX 時間格式來存儲當(dāng)前日期或時間。你可以指定自己的日期時間:創(chuàng)建 Date 對象,傳入年月日信息。
Object ID對象 ID。用于創(chuàng)建文檔的 ID。
Binary Data二進(jìn)制數(shù)據(jù)。用于存儲二進(jìn)制數(shù)據(jù)。
Code代碼類型。用于在文檔中存儲 JavaScript 代碼。
Regular expression正則表達(dá)式類型。用于存儲正則表達(dá)式。

MongoDB特點

  • 高性能:MongoDB提供高性能的數(shù)據(jù)持久性。特別是,對嵌入式數(shù)據(jù)模型的支持減少了數(shù)據(jù)庫系統(tǒng)上的I/O活動。索引支持更快的查詢。
  • 高可用性:MongoDB的復(fù)制工具稱為副本集(replica set),它可提供自動故障轉(zhuǎn)移和數(shù)據(jù)冗余。
  • 高擴(kuò)展性:MongoDB提供了水平可擴(kuò)展性作為其核心功能的一部分。分片將數(shù)據(jù)分布在一組集群的機(jī)器上。(海量數(shù)據(jù)存儲,服務(wù)能力水平擴(kuò)展)
  • 豐富的查詢支持:MongoDB支持豐富的查詢語言,支持讀和寫操作(CRUD),比如數(shù)據(jù)聚合、文本搜索和地理空間查詢等。

MongoDB下載與安裝

MongoDB下載網(wǎng)址:https://www.mongodb.com/try/download/community

圖形化界面MongoDB Compass下載網(wǎng)址: https://www.mongodb.com/try/download/compass

創(chuàng)建數(shù)據(jù)目錄
MongoDB 將數(shù)據(jù)目錄存儲在 db 目錄下。但是這個數(shù)據(jù)目錄不會主動創(chuàng)建,我們在安裝完成后需要創(chuàng)建它。
例如:在D盤創(chuàng)建一個 data 的目錄,然后在 data 目錄里創(chuàng)建 db 目錄。

啟動MongoDB
在MongoDB 目錄的 bin 目錄中執(zhí)行 mongod.exe 文件

D:\MongoDB\bin>mongod --dpath d:\data\db

MongoDB啟動成功后,默認(rèn)端口是27017

Compass連接MongoDB

連接成功后界面如下:

SpringBoot實戰(zhàn)

功能需求
實現(xiàn)文章評論的增刪改查,參考示例如圖所示:

表結(jié)構(gòu)分析
數(shù)據(jù)庫:articledb

字段名稱字段含義字段類型備注
_idIDObjectId或StringMongo的主鍵的字段
articleid文章IDString
content評論內(nèi)容String
userid評論人IDString
nickname評論人昵稱String
createdatetime評論的日期時間Date
likenum點贊數(shù)Int32
replynum回復(fù)數(shù)Int32
state狀態(tài)String0:不可見;1:可見;
parentid上級IDString如果為0表示文章的頂級評論

文章微服務(wù)模塊搭建
搭建項目工程article,項目目錄結(jié)構(gòu)如下

引入MongoDB依賴

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

創(chuàng)建application.yml
注意,需先在MongonDB中創(chuàng)建articledb數(shù)據(jù)庫

spring:
  data:
    mongodb:
      host: 127.0.0.1
      database: articledb
      port: 27017

創(chuàng)建啟動類

@SpringBootApplication
public class ArticleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ArticleApplication.class, args);
    }
}

啟動項目,看能否正常運行。

文章實體類的創(chuàng)建

@Data
@Document(collection = "comment")  // 指定為comment集合
@CompoundIndex(def = "{'userid':1}")  // 在userid上建立升序索引
public class Comment implements Serializable {
    @Id
    private String id;//主鍵
    //該屬性對應(yīng)mongodb的字段的名字,如果一致,則無需該注解
    @Field("content")
    private String content;//評論內(nèi)容
    private Date publishtime;//發(fā)布日期
    //添加了一個單字段的索引
    @Indexed
    private String userid;//發(fā)布人ID
    private String nickname;//昵稱
    private LocalDateTime createdatetime;//評論的日期時間
    private Integer likenum;//點贊數(shù)
    private Integer replynum;//回復(fù)數(shù)
    private String state;//狀態(tài)
    private String parentid;//上級ID
    private String articleid;
}

文章評論持久層的創(chuàng)建
創(chuàng)建持久層時,需繼承MongoRepository接口

public interface CommentRepository extends MongoRepository<Comment, String> {
}

文章評論service層的創(chuàng)建

@Service
public class CommentService {
    @Autowired
    private CommentRepository commentRepository;
    /**
     * 保存評論
     * @param comment
     */
    public void saveComment(Comment comment){
        commentRepository.save(comment);
    }
    /**
     * 更新評論
     * @param comment
     */
    public void updateComment(Comment comment){
        commentRepository.save(comment);
    }
    /**
     * 根據(jù)id刪除評論
     * @param id
     */
    public void deleteCommentById(String id){
        commentRepository.deleteById(id);
    }
    /**
     * 查詢所有評論
     * @return
     */
    public List<Comment> findCommentList(){
        return commentRepository.findAll();
    }
    /**
     * 根據(jù)id查詢評論
     * @param id
     * @return
     */
    public Comment findCommentById(String id){
        return commentRepository.findById(id).get();
    }
    /**
     * 文章評論點贊,點贊數(shù)+1
     * @param id
     */
    public void updateCommentLikenum(String id){
        Query query = new Query(Criteria.where("_id").is(id));
        Update update = new Update();
        update.inc("likenum");
        mongoTemplate.updateFirst(query, update, Comment.class);
    }
}

文章評論微服務(wù)測試

@SpringBootTest(classes = ArticleApplication.class)
@RunWith(SpringRunner.class)
public class CommentServiceTest {
    @Autowired
    private CommentService commentService;
    @Test
    public void testFindComment(){
        List<Comment> commentList = commentService.findCommentList();
        System.out.println(commentList);
    }
    @Test
    public void testFindCommentById(){
        Comment comment = commentService.findCommentById("1");
        System.out.println(comment);
    }
    @Test
    public void testSaveComment(){
        Comment comment = new Comment();
        comment.setArticleid("100002");
        comment.setContent("樊神yyds");
        comment.setCreatedatetime(LocalDateTime.now());
        comment.setUserid("1003");
        comment.setNickname("隨緣夏沫");
        comment.setState("1");
        comment.setLikenum(0);
        comment.setReplynum(0);
        commentService.saveComment(comment);
    }
    @Test
    public void testFindCommentListByParentid(){
        Page<Comment> page = commentService.findCommentListByParentid("1", 1, 2);
        System.out.println(page.getContent());
    }
    @Test
    public void testUpdateCommentLikenum(){
        commentService.updateCommentLikenum("2");
    }
}

到此這篇關(guān)于MongoDB快速入門及其SpringBoot實戰(zhàn)的文章就介紹到這了,更多相關(guān)MongoDB入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB分片測試

    MongoDB分片測試

    分片是mongoDB擴(kuò)展的一種方式。分片分割一個collection并將不同的部分存儲在不同的機(jī)器上,本文給大家介紹MongoDB分片測試,需要的朋友參考下吧
    2016-03-03
  • 詳解MongoDB的角色管理

    詳解MongoDB的角色管理

    這篇文章主要介紹了詳解MongoDB的角色管理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB實現(xiàn)問卷/考試設(shè)計功能

    MongoDB實現(xiàn)問卷/考試設(shè)計功能

    MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲解決方案。。本文給大家分享MongoDB實現(xiàn)問卷/考試設(shè)計,需要的朋友可以參考下
    2019-11-11
  • Mongodb數(shù)據(jù)庫兩種啟動方法小結(jié)

    Mongodb數(shù)據(jù)庫兩種啟動方法小結(jié)

    MongoDB是一種開源的服務(wù)器端NoSQL數(shù)據(jù)庫管理系統(tǒng),它提供了一種靈活的框架,可以快速地存儲、處理和管理大量的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Mongodb數(shù)據(jù)庫兩種啟動方法的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • MongoDB 常用的數(shù)據(jù)類型和基本操作

    MongoDB 常用的數(shù)據(jù)類型和基本操作

    這篇文章主要介紹了MongoDB 常用的數(shù)據(jù)類型和基本操作,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-03-03
  • MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程

    MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程

    MongoDB中的聚合aggregate主要用于處理數(shù)據(jù)計算,這里我們就來詳細(xì)整理MongoDB的聚合框架Aggregation Framework入門學(xué)習(xí)教程,需要的朋友可以參考下
    2016-07-07
  • MongoDB的Master-Slave主從模式配置及主從復(fù)制要點解析

    MongoDB的Master-Slave主從模式配置及主從復(fù)制要點解析

    主從復(fù)制是數(shù)據(jù)庫運維中一種常見的備份方式,這里我們來看一下MongoDB的Master-Slave主從模式配置及主從復(fù)制要點解析,需要的朋友可以參考下
    2016-06-06
  • mongodb與mysql命令詳細(xì)對比

    mongodb與mysql命令詳細(xì)對比

    MongoDB的好處挺多的,比如多列索引,查詢時可以用一些統(tǒng)計函數(shù),支持多條件查詢,但是目前多表查詢是不支持的,可以想辦法通過數(shù)據(jù)冗余來解決多表查詢的問題
    2013-08-08
  • MongoDB如何查看版本信息詳解

    MongoDB如何查看版本信息詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB如何查看版本信息的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • MongoDB通過查詢與游標(biāo)徹底玩轉(zhuǎn)分布式文件存儲

    MongoDB通過查詢與游標(biāo)徹底玩轉(zhuǎn)分布式文件存儲

    MongoDB最大的特點是它支持的查詢語言非常強(qiáng)大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關(guān)系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引,這篇文章主要介紹了MongoDB查詢與游標(biāo),徹底玩轉(zhuǎn)分布式文件存儲,需要的朋友可以參考下
    2023-01-01

最新評論

齐河县| 锡林浩特市| 东辽县| 株洲县| 富锦市| 永康市| 秭归县| 海晏县| 铜川市| 高雄市| 玉屏| 威海市| 措美县| 芷江| 石柱| 八宿县| 如东县| 潞城市| 双柏县| 泉州市| 靖宇县| 广饶县| 增城市| 阿巴嘎旗| 运城市| 卓资县| 衡水市| 南丹县| 丽水市| 湛江市| 锦州市| 六盘水市| 稻城县| 多伦县| 永宁县| 柳林县| 沙坪坝区| 宁夏| 黔江区| 长宁县| 冀州市|