初試MongoDB資料庫

張優秀發表於2019-02-16

資料庫基本概念

資料庫(Database)基本概念:

  1. 資料庫就是按照一定的資料結構來組織,儲存和管理資料的倉庫
  2. 我們寫的程式都是在記憶體中執行的,一旦程式執行結束或者計算機斷點,程式執行中的資料就會全部丟失;所以我們就需要將一些程式的資料持久化到鍵盤之中,以確保資料的安全性。
  3. 資料庫則是大批量資料持久化的普遍選擇,1.檔案 2. 資料庫

為什麼都採用資料庫來儲存資料:

  • 資料庫是有結構的
  • 資料庫可以提供各種介面,讓資料處理(增刪改查)快捷方便
  • 各種語言(PHP jsp .net..)提供了完善的介面

b6dde1cf95ae2a9ec8e68c0bf1719a3.png

###資料庫分類

  1. ROBMS(關係型資料庫):
    • 比如MySql 、sql server Oracle 等
    • 特點 通過一張張表來建立關聯
    • 基本都使用SQL語言來管理資料庫,
  2. Nosql (非關係型資料庫):
    • 沒有行 、列的概念 用json類儲存資料
    • 集合相當於“表”,文件相當於“行”
    • 標準化和非標準化的摩擦。
    • 標準化限制創新,非標準話不能統一

特徵: 使用鍵值(Key Value)儲存資料; MongoDB的邏輯結構是一種層次結構,主要由:文件(document)、集合(collection)、資料庫(database)這三部分組成的。

  • 文件(document):由鍵/值對構成,像{a:1};{s:”abc”}等,它是MongoDB核心單元,MongoDB的文件(document),相當於關聯式資料庫中的一行記錄。
  • 集合(Collection):多個文件組成一個集合(collection),相當於關聯式資料庫的表。
  • 資料庫(database):多個集合(collection),邏輯上組織在一起,就是資料庫(database)。 一個MongoDB例項支援多個資料庫(database)。

關係型資料庫和非關係型資料庫區別: 關係型資料庫比較結構化,操作不是很靈活,菲關係型資料庫操作靈活,但不適合大型資料儲存,比較適合微架構,兩者是相輔相成的關係

8bc32dd95a923344fdc2710d2fcbeab.png

非關係型資料庫使用方面:

  1. 資料模型比較簡單
  2. 需要靈活性更強的後臺系統
  3. 對資料庫效能要求比較高
  4. 不需要高度的資料一致性

非關係型資料庫主要適合小微型架構的使用

資料庫MongoDB安裝

MongoDB(非關係型資料庫):

  1. 適合快速開發web應用而設計的資料庫系統
  2. 設計目標是極簡、靈活、經常在web應用棧的業務層被運用
  3. 它的資料模型是面向文件的,類似於json的結構
  4. 所以這個資料庫中是各種各樣的json, 並以鍵值形式對儲存

安裝: 下載:www.mongodb.com/ 偶數是穩定版,奇數是開發版 最好下載64位的系統版本的

配置環境變數:

  1. 新建--->安裝到bin路徑複製到環境變數
  2. 建立data->db資料夾
  3. 開啟命令列輸入mongod啟動DB伺服器
  4. 指定埠號和路徑 mongod --dbpath d:\data\db
  5. 將MongDB設定為系統服務,data\log 建立配置檔案在bin下穿件檔案mongod.cfg 執行一段命令:
sc.exe create MongoDB binPath= "\"F:\MongoDB\Server\3.2\bin\mongod.exe\" --service --config= \"F:\MongoDB\Server\3.2\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"
複製程式碼

主要是讓MongoDB一直執行在記憶體中 參考資料: www.cnblogs.com/wzlblog/p/6… www.cnblogs.com/chenlq/p/65…

在命令列中使用MongoDB插入命令

MongoDB的組成:

  • 資料庫 資料庫是一個倉庫 在倉庫裡可以放集合
  • 集合: 集合類似陣列 在集合裡可以放文件
  • 文件:文件是資料庫中最小的單位 我們儲存和操作的內容都是文件。

基本指令: show dbs 顯示當前所有的資料庫 use 資料庫名 進入到指定資料庫 db 顯示當前所在的資料庫 show collections 顯示資料庫中的所有集合

使用管理員開啟 cmd 輸入 mongo進入MongoDB的環境 進入MongoDB的環境才能執行MongoDB的命令 然後使用命令列進行CRUD(增刪改查): db.<collection>.insert(doc)

舉例子: 想school資料庫中的學生集合student中插入一個新的學生物件 增加一條資料: db.student.insert({id:"001",name:"znl",age:18,sex:“男”}) 在當前的集合(school)中新建一條資料

查詢一條資料: db.<collection>.find();

如:db.student.find(); 回車 就能查詢student下的所有資料 插入多條資料:

db.集合名.insert([
    {name:"張三",age:18,sex:"man"},
    {name:"張三",age:18,sex:"man"},
    {name:"張三",age:18,sex:"man"},
    {id:18,name:"張三",age:18,sex:"man"}
]);
複製程式碼

插入多條資料時把多條語句放在一個陣列裡 插入可隨便插入 不必拘泥於欄位是否相同 當插入的欄位不存在時會自動建立該欄位

檢視更多更多操作:www.mongodb.org.cn/manual/

MongoDB 視覺化工具 【NOSQL】

然而一直使用命令列操作是很麻煩的事情,所以推薦使用NOSQL視覺化工具 安裝視覺化工具下載地址:www.mongodbmanager.com/download

使用視覺化工具

視覺化工具 查詢功能: 插入(insert)語句:

db.student(集合名字).insert([
{id:1,name:"znl",age:18},
{id:1,name:"znl",age:18},
]);
複製程式碼

查詢語句: db.student(集合name).find();

設定條件查詢: db.student.find({ "_id" : ObjectId("5bd01c825f0d528d36a2c06f")}); 查詢id對應的資料 db.student.find({age:18,name:"張三"}); 查詢所有的age是18並且name是張三的人 db.student.findOne({age:18,name:"張三"}); 查詢單條符合條件的資料

操作符-查詢有多少條資料: db.student.find().count();db.student.find().length(); 返回資料總條數

查詢符合條件資料的條數: db.student.find({name:"張三"}).length(); 返回符合name:"張三"的條數

資料庫更新命令

更新原有的欄位的資料:

db.student.update({"name":"張三"},{$set:{
      name:"劉五",
      age:45
}});
複製程式碼

把匹配到的name:"張三"的資料都更新成 name:"劉五", age:45 也可以新增沒有的欄位 直接寫入就可以 $set :有這個欄位就修改 沒有這個欄位就新增

刪除一個欄位:

db.student.update({"name":"張三"},{$unset:{
    age:1
}});
複製程式碼

查詢name:張三的一條資料 然後刪除它的age欄位

修改多條:

db.student.updateMany({"sex":"man"},{$set:{
    aihao:"玩遊戲"
}});
複製程式碼

把符合sex:man的語句都新增(修改)一條aihao:"玩遊戲" $set :有則修改 無則新增

更新多條資料方法2:

db.student.update({name:"張三"},{$set:{
      name:"王五"
}}, {
     multi:true
});
複製程式碼

參考文件:docs.mongodb.com/manual/tuto…

相關文章