亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2023年12月08日 14:49:35   作者:積雨輞川  
MongoDB是一個開源、高性能、無模式的文檔型數(shù)據(jù)庫,當初的設(shè)計就是用于簡化開發(fā)和方便擴展,是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)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。

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

它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,所以它既可以存儲比較復(fù)雜的數(shù)據(jù)類型,又相當?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(二進制的 JSON)元素的最低值和最高值相對比。
Array用于將數(shù)組或列表或多個值存儲為一個鍵。
Timestamp時間戳。記錄文檔修改或添加的具體時間。
Object用于內(nèi)嵌文檔。
Null用于創(chuàng)建空值。
Symbol符號。該數(shù)據(jù)類型基本上等同于字符串類型,但不同的是,它一般用于采用特殊符號類型的語言。
Date日期時間。用 UNIX 時間格式來存儲當前日期或時間。你可以指定自己的日期時間:創(chuàng)建 Date 對象,傳入年月日信息。
Object ID對象 ID。用于創(chuàng)建文檔的 ID。
Binary Data二進制數(shù)據(jù)。用于存儲二進制數(shù)據(jù)。
Code代碼類型。用于在文檔中存儲 JavaScript 代碼。
Regular expression正則表達式類型。用于存儲正則表達式。

MongoDB特點

  • 高性能:MongoDB提供高性能的數(shù)據(jù)持久性。特別是,對嵌入式數(shù)據(jù)模型的支持減少了數(shù)據(jù)庫系統(tǒng)上的I/O活動。索引支持更快的查詢。
  • 高可用性:MongoDB的復(fù)制工具稱為副本集(replica set),它可提供自動故障轉(zhuǎn)移和數(shù)據(jù)冗余。
  • 高擴展性:MongoDB提供了水平可擴展性作為其核心功能的一部分。分片將數(shù)據(jù)分布在一組集群的機器上。(海量數(shù)據(jù)存儲,服務(wù)能力水平擴展)
  • 豐富的查詢支持: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啟動成功后,默認端口是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入門教程之常用的運維技術(shù)介紹

    MongoDB入門教程之常用的運維技術(shù)介紹

    這篇文章主要介紹了MongoDB入門教程之常用的運維技術(shù)介紹,講解了安裝部署、狀態(tài)監(jiān)控、安全認證、備份和恢復(fù)等內(nèi)容,需要的朋友可以參考下
    2014-08-08
  • MongoDB基礎(chǔ)命令以及操作示例詳解

    MongoDB基礎(chǔ)命令以及操作示例詳解

    Mongodb:是一種NoSQL數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于MongoDB基礎(chǔ)命令以及操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • MongoDB的Master-Slave主從模式配置及主從復(fù)制要點解析

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

    主從復(fù)制是數(shù)據(jù)庫運維中一種常見的備份方式,這里我們來看一下MongoDB的Master-Slave主從模式配置及主從復(fù)制要點解析,需要的朋友可以參考下
    2016-06-06
  • MongoDB特定類型的查詢語句實例

    MongoDB特定類型的查詢語句實例

    在關(guān)系型數(shù)據(jù)庫中,可以實現(xiàn)基于表的各種各樣的查詢,下面這篇文章主要給大家介紹了關(guān)于MongoDB特定類型查詢的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容

    MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容

    mongoDB是沒有定義replace函數(shù)的,那么如果有需求需要替換nongo中數(shù)據(jù)的某一部分,怎么辦?下面這篇文章主要給大家介紹了關(guān)于MongoDB數(shù)據(jù)庫類replace替換字符串指定內(nèi)容的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • MongoDB常用操作匯總

    MongoDB常用操作匯總

    MongoDB 是由C++語言編寫的,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。在高負載的情況下,添加更多的節(jié)點,可以保證服務(wù)器性能。MongoDB 旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
    2017-05-05
  • MongoDB用Mongoose得到的對象不能增加屬性完美解決方法(兩種)

    MongoDB用Mongoose得到的對象不能增加屬性完美解決方法(兩種)

    本文給大家分享兩種解決方案解決MongoDB用Mongoose得到的對象不能增加屬性問題,本文給大家介紹的非常詳細,需要的朋友參考下吧
    2017-11-11
  • MongoDB系列教程(四):設(shè)置用戶訪問權(quán)限

    MongoDB系列教程(四):設(shè)置用戶訪問權(quán)限

    這篇文章主要介紹了MongoDB系列教程(四):設(shè)置用戶訪問權(quán)限,本文講解了在Windows環(huán)境下如何創(chuàng)建用戶認證,需要的朋友可以參考下
    2015-05-05
  • MongoDB分片集群部署詳解

    MongoDB分片集群部署詳解

    這篇文章主要介紹了MongoDB分片集群部署詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • mongodb啟動方法小結(jié)

    mongodb啟動方法小結(jié)

    這篇文章主要介紹了mongodb啟動方法小結(jié),啟動Mongodb服務(wù)有兩種方式,前臺啟動或者Daemon方式啟動,每種方式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01

最新評論