簡介
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.msi
Download 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的快速上手使用了。