快速上手非關系型數據庫-MongoDB

簡介

MongoDB 是一個基于文檔的 NoSQL 數據庫,由 MongoDB Inc. 開發。

NoSQL,指的是非關系型的數據庫。NoSQL有時也稱作Not Only SQL的縮寫,是對不同于傳統的關系型數據庫的數據庫管理系統的統稱。

MongoDB 的設計理念是為了應對大數據量、高性能和靈活性需求。

MongoDB使用集合(Collections)來組織文檔(Documents),每個文檔都是由鍵值對組成的。

  • 數據庫(Database):存儲數據的容器,類似于關系型數據庫中的數據庫。

  • 集合(Collection):數據庫中的一個集合,類似于關系型數據庫中的表。

  • 文檔(Document):集合中的一個數據記錄,類似于關系型數據庫中的行(row),以 BSON 格式存儲。

MongoDB 將數據存儲為一個文檔,數據結構由鍵值(key=>value)對組成,文檔類似于 JSON 對象,字段值可以包含其他文檔,數組及文檔數組:

安裝MongoDB

服務器:mongodb-windows-x86_64-8.0.6-signed.msiDownload MongoDB Community Server | MongoDB

命令行客戶端 :mongosh-2.5.0-win32-x64.zip MongoDB Shell Download | MongoDB

圖形客戶端:mongodb-compass-1.39.3-win32-x64.exe MongoDB Compass Download (GUI) | MongoDB

使用mongosh

啟動 MongoDB Shell:

在命令行中輸入 mongosh 命令,啟動 MongoDB Shell,如果 MongoDB 服務器運行在本地默認端口(27017),則可以直接連接。

mongosh

連接到 MongoDB 服務器:

如果 MongoDB 服務器運行在非默認端口或者遠程服務器上,可以使用以下命令連接:

mongosh --host <hostname>:<port>

其中 <hostname> 是 MongoDB 服務器的主機名或 IP 地址,<port> 是 MongoDB 服務器的端口號。

執行基本操作:

連接成功后,可以執行各種 MongoDB 數據庫操作。例如:

  • 查看當前數據庫:db

  • 顯示數據庫列表:show dbs

  • 切換到指定數據庫:use <database_name>

  • 執行查詢操作:db.<collection_name>.find()

  • 插入文檔:db.<collection_name>.insertOne({ ... })

  • 更新文檔:db.<collection_name>.updateOne({ ... })

  • 刪除文檔:db.<collection_name>.deleteOne({ ... })

  • 退出 MongoDB Shell:quit() 或者 exit

使用mongodb-compass

?

整合SpringBoot

?引入MongoDB依賴:

<!-- Spring Boot Starter Data MongoDB -->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

添加遠程連接配置:

#MongoDB連接配置
spring.data.mongodb.uri=mongodb://localhost:27017/chat_memory_db

?CRUD測試

創建實體類:映射MongoDB中的文檔(相當與MySQL的表)

package com.atguigu.java.ai.langchain4j.bean;@Data
@AllArgsConstructor
@NoArgsConstructor
@Document("chat_messages")
public class ChatMessages {//唯一標識,映射到 MongoDB 文檔的 _id 字段@Idprivate ObjectId messageId;//private Long messageId;private String content; //存儲當前聊天記錄列表的json字符串
}

創建測試類:

只要在pom文件中引入MongoDB的依賴并且在配置文件中配置了MongoDB的連接,就可以直接在需要使用MonggoDB的地方注入MongoTemplate。

@SpringBootTest
public class MongoCrudTest {@Autowiredprivate MongoTemplate mongoTemplate;/*** 插入文檔*//* @Testpublic void testInsert() {mongoTemplate.insert(new ChatMessages(1L, "聊天記錄"));}*//*** 插入文檔*/@Testpublic void testInsert2() {ChatMessages chatMessages = new ChatMessages();chatMessages.setContent("聊天記錄列表");mongoTemplate.insert(chatMessages);}/*** 根據id查詢文檔*/@Testpublic void testFindById() {ChatMessages chatMessages = mongoTemplate.findById("6801ead733ba9c4a0d9b6c7b", ChatMessages.class);System.out.println(chatMessages);}/*** 修改文檔*/@Testpublic void testUpdate() {Criteria criteria = Criteria.where("_id").is("6801ead733ba9c4a0d9b6c7b");Query query = new Query(criteria);Update update = new Update();update.set("content", "新的聊天記錄列表");//修改或新增mongoTemplate.upsert(query, update, ChatMessages.class);}/*** 新增或修改文檔*/@Testpublic void testUpdate2() {Criteria criteria = Criteria.where("_id").is("100");Query query = new Query(criteria);Update update = new Update();update.set("content", "新的聊天記錄列表");//修改或新增mongoTemplate.upsert(query, update, ChatMessages.class);}/*** 刪除文檔*/@Testpublic void testDelete() {Criteria criteria = Criteria.where("_id").is("100");Query query = new Query(criteria);mongoTemplate.remove(query, ChatMessages.class);}
}

?當在測試類測試插入一個文檔時:

 /*** 插入文檔*/@Testpublic void testInsert2() {ChatMessages chatMessages = new ChatMessages();chatMessages.setContent("聊天記錄列表");mongoTemplate.insert(chatMessages);}

?可以在圖形化界面看到插入成功了。

以上就是對非關系型數據庫-MongoDB的快速上手使用了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/81364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/81364.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/81364.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

性能優化實踐:啟動優化方案

性能優化實踐&#xff1a;啟動優化方案 在Flutter應用開發中&#xff0c;啟動性能是用戶體驗的第一印象&#xff0c;也是應用性能優化的重要環節。本文將從理論到實踐&#xff0c;深入探討Flutter應用的啟動優化方案。 一、Flutter應用啟動流程分析 1. 啟動類型 冷啟動&…

在文本廢墟中打撈月光

在文本廢墟中打撈月光 ----再讀三三的《山頂上是海》之“暗室”所理 今天是2025年5月1日&#xff0c;傳統的“五一”小長假。當我早飯后“坐”在衛生間的那幾分鐘里&#xff0c;閨女和兒子就騎著家中僅有的兩輛電動車去了圖書館。我是該做些什么&#xff1f; 于是我左手拿著三…

C++之類和對象基礎

?向對象三?特性&#xff1a;封裝、繼承、多態 類和對象 一.類的定義1. 類的定義格式2.類域 二.實例化1.對象2.對象的大小 三.this指針 在 C 的世界里&#xff0c;類和對象構成了面向對象編程&#xff08;Object-Oriented Programming&#xff0c;OOP&#xff09;的核心框架&…

計算機網絡——HTTP/IP 協議通俗入門詳解

HTTP/IP 協議通俗入門詳解 一、什么是 HTTP 協議&#xff1f;1. 基本定義2. HTTP 是怎么工作的&#xff1f; 二、HTTP 協議的特點三、HTTPS 是什么&#xff1f;它和 HTTP 有啥區別&#xff1f;1. HTTPS 概述2. HTTP vs HTTPS 四、HTTP 的通信過程步驟詳解&#xff1a; 五、常見…

使用 Java 實現一個簡單且高效的任務調度框架

目錄 一、任務調度系統概述 &#xff08;一&#xff09;任務調度的目標 &#xff08;二&#xff09;任務調度框架的關鍵組成 二、任務狀態設計 &#xff08;一&#xff09;任務狀態流轉設計 &#xff08;二&#xff09;任務表設計&#xff08;SQL&#xff09; 三、單機任…

基于GPT 模板開發智能寫作輔助應用

目錄 項目說明 1. 項目背景 2. 項目目標 3. 功能需求 4. 技術選型 項目結構 詳細代碼實現 前端代碼(client) client/src/main.js client/src/App.vue client/src/components/HistoryList.vue 后端代碼(server) server/app.js server/routes/api.js server/mo…

linux 使用nginx部署next.js項目,并使用pm2守護進程

前言 本文基于&#xff1a;操作系統 CentOS Stream 8 使用工具&#xff1a;Xshell8、Xftp8 服務器基礎環境&#xff1a; node - 請查看 linux安裝node并全局可用pm2 - 請查看 linux安裝pm2并全局可用nginx - 請查看 linux 使用nginx部署vue、react項目 所需服務器基礎環境&…

使用huggingface_hub需要注意的事項

在安裝huggingface_hub的時候要注意如果你的python是放在c盤下時記得用管理員模式命令行來安裝huggingface_hub&#xff0c;否則安裝過程會報錯&#xff0c;之后也不會有huggingface-cli命令。 如果安裝時因為沒有用管理員權限安裝而報錯了&#xff0c;可以先卸載huggingface-…

Spring MVC @RequestHeader 注解怎么用?

我們來詳細解釋一下 Spring MVC 中的 RequestHeader 注解。 RequestHeader 注解的作用 RequestHeader 注解用于將 HTTP 請求中的**請求頭&#xff08;Request Headers&#xff09;**的值綁定到 Controller 方法的參數上。 請求頭是 HTTP 請求的一部分&#xff0c;包含了關于…

Rust 學習筆記:關于結構體的例題

Rust 學習筆記&#xff1a;關于結構體的例題 Rust 學習筆記&#xff1a;關于結構體的例題下面的程序能通過編譯嗎&#xff1f;下面的程序能通過編譯嗎&#xff1f;下面的程序能通過編譯嗎&#xff1f;哪種說法最能描述 Display 和 Debug 特質之間的區別&#xff1f;下面哪個選項…

STM32 SPI通信協議

1. SPI協議概述 1.1 什么是SPI&#xff1f; SPI&#xff08;Serial Peripheral Interface&#xff09;是由摩托羅拉公司于1980年代提出的同步串行通信協議&#xff0c;主要用于短距離高速芯片間通信。作為四線制全雙工通信協議&#xff0c;它以簡單的硬件實現和高效的傳輸速率…

92.一個簡單的輸入與顯示示例 Maui例子 C#例子

一、關于項目命名的注意事項 在開發.NET MAUI項目時&#xff0c;項目命名是一個不可忽視的細節。如果你習慣了在C#控制臺或WPF項目中使用中文項目名稱&#xff0c;那么在.NET MAUI中&#xff0c;你可能會遇到一些問題。我之前就因為使用中文項目名稱而導致項目無法直接運行&am…

Locate 3D:Meta出品自監督學習3D定位方法

標題&#xff1a; Locate 3D: Real-World Object Localization via Self-Supervised Learning in 3D 摘要&#xff1a; 我們提出了 Locate 3D&#xff0c;這是一種可根據指代表達&#xff08;如“沙發和燈之間的小咖啡桌”&#xff09;在三維場景中定位物體的模型。Locate 3…

FastAPI 與數據庫交互示例

目錄 安裝必要的包完整代碼示例運行應用使用說明API 端點說明代碼解析 下面將創建一個簡單的 FastAPI 應用程序&#xff0c;演示如何與 SQLite 數據庫進行交互。這個例子包括創建、讀取、更新和刪除&#xff08;CRUD&#xff09;操作。 安裝必要的包 首先&#xff0c;需要安裝…

YOLO旋轉目標檢測之ONNX模型推理

YOLO旋轉檢測相較于目標檢測而言&#xff0c;其只是最后的輸出層網絡發生了改變&#xff0c;一個最明顯的區別便是&#xff1a;目標檢測的檢測框是xywh&#xff0c;而旋轉檢測則為xywha&#xff0c;其中&#xff0c;這個a代表angle&#xff0c;即旋轉角度&#xff0c;其余的基本…

架構進階:深入學習企業總體架構規劃(Oracle 戰略專家培訓課件)【附全文閱讀】

本文主要討論了企業總體技術架構規劃的重要性與實施建議。針對Oracle戰略專家培訓課件中的內容&#xff0c;文章強調了行業面臨的挑戰及現狀分析、總體技術架構探討、SOA集成解決方案討論與問題解答等方面。文章指出&#xff0c;為了消除信息孤島、強化應用系統&#xff0c;需要…

llamafactory-cli webui啟動報錯TypeError: argument of type ‘bool‘ is not iterable

一、問題 在阿里云NoteBook上啟動llamafactory-cli webui報錯TypeError: argument of type ‘bool’ is not iterable This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run gradio deploy from the terminal in the working directory t…

Gas 優化不足、升級機制缺陷問題

以下是針對智能合約中 Gas 優化不足 與 升級機制缺陷 的技術風險分析與解決方案: 一、Gas 優化不足 1. 核心問題 Gas 優化不足會導致合約執行成本過高,直接影響用戶體驗和協議可行性,尤其在交易高峰期可能引發鏈上擁堵或交易失敗。 2. 常見風險點 冗余計算與存儲操作 例如…

使用xlwings計算合并單元格的求和

有如下一個excel表 表內有合并單元格&#xff0c;現在需要求和&#xff0c;不能直接下拉填充公式怎么辦&#xff1f; 通常的辦法是先取消合并單元格&#xff0c;計算后&#xff0c;再次合并單元格&#xff0c;比較繁瑣。 在此&#xff0c;嘗試使用python和xlwings運行直接給出…

[創業之路-354]:農業文明到智能紀元:四次工業革命下的人類遷徙與價值重構

農業文明到智能紀元&#xff1a;四次工業革命下的人類遷徙與價值重構 從游牧到定居&#xff0c;從蒸汽轟鳴到算法洪流&#xff0c;人類文明的每一次跨越都伴隨著生產關系的劇烈震蕩。四次工業革命的浪潮不僅重塑了物質世界的生產方式&#xff0c;更將人類推向了身份認同與存在…