- MongoDB進階與實戰:微服務整合、性能優化、架構管理
- 唐卓章
- 1049字
- 2021-05-19 17:44:35
1.2 類比SQL模型
1.2.1 數據結構
如果你已經熟知關系型數據庫(RDBMS)的概念模型,那么不難理解database、table、row、column這幾個基本概念。MongoDB使用的數據模型與它們非常類似,見表1-2。
表1-2 MongoDB概念

說明如下:
● 數據庫(database):最外層的概念,可以理解為邏輯上的名稱空間,一個數據庫包含多個不同名稱的集合。
● 集合(collection):相當于SQL中的表,一個集合可以存放多個不同的文檔。
● 文檔(document):一個文檔相當于數據表中的一行,由多個不同的字段組成。
● 字段(field):文檔中的一個屬性,等同于列(column)。
● 索引(index):獨立的檢索式數據結構,與SQL概念一致。
● _id:每個文檔中都擁有一個唯一的_id字段,相當于SQL中的主鍵(primary key)。
● 視圖(view):可以看作一種虛擬的(非真實存在的)集合,與SQL中的視圖類似。從MongoDB 3.4版本開始提供了視圖功能,其通過聚合管道技術實現。
● 聚合操作($lookup):MongoDB用于實現“類似”表連接(table join)的聚合操作符。
盡管這些概念大多與SQL標準定義類似,但MongoDB與傳統RDBMS仍然存在不少差異,包括:
(1)半結構化,在一個集合中,文檔所擁有的字段并不需要是相同的,而且也不需要對所用的字段進行聲明。因此,MongoDB具有很明顯的半結構化特點。除了松散的表結構,文檔還可以支持多級的嵌套、數組等靈活的數據類型,非常契合面向對象的編程模型。
(2)弱關系,MongoDB沒有外鍵的約束,也沒有非常強大的表連接能力。類似的功能需要使用聚合管道技術來彌補。
1.2.2 類SQL語句
既然MongoDB視一切為文檔,那么自然也包括數據操作的命令。
所有的增加、刪除、修改、查詢命令都通過JSON文檔進行描述。值得慶幸的是,如果你已經熟知標準的SQL語法(ANSI SQL),那么在轉換到MongoDB這種文檔式命令風格時或許會覺得很自然。其中原因就在于,SQL本身也是一種結構化的表達語言,例如一個select查詢語句的基本組成包括:
● select子句,表示查詢什么內容。
● from子句,表示從哪里查。
● where子句,表示按什么條件過濾。
MongoDB的查詢命令幾乎有著一模一樣的語義,可以說MongoDB的指令實質上也是一種類SQL語義的實現。
接下來,通過一組對比來快速了解MongoDB的命令風格。
1.創建表
SQL語句如下:

類似的MongoDB命令如下:

MongoDB在首次寫入文檔時,會自動創建集合。
2.創建索引
SQL語句如下:

類似的MongoDB命令如下:

3.插入數據
SQL語句如下:

類似的MongoDB命令如下:

4.查詢全表
SQL語句如下:

類似的MongoDB命令如下:

5.條件查詢
SQL語句如下:

類似的MongoDB命令如下:


6.分頁查詢
SQL語句如下:

類似的MongoDB命令如下:

7.更新數據
SQL語句如下:

類似的MongoDB命令如下:

8.刪除數據
SQL語句如下:

類似的MongoDB命令如下:

或許,你基本能理解每個命令的含義。如果仍然存疑,請不要著急,在后面的章節中仍然會介紹這些命令的使用方法。
- DB2 V9權威指南
- Django+Vue.js商城項目實戰
- 自然語言處理實戰:預訓練模型應用及其產品化
- DevOps with Kubernetes
- 零基礎PHP學習筆記
- 密碼學原理與Java實現
- Responsive Web Design with HTML5 and CSS3
- C語言程序設計教程(第2版)
- 手把手教你學C語言
- 琢石成器:Windows環境下32位匯編語言程序設計
- TypeScript項目開發實戰
- 用戶體驗增長:數字化·智能化·綠色化
- Serverless computing in Azure with .NET
- Create React App 2 Quick Start Guide
- Django 5企業級Web應用開發實戰(視頻教學版)