1. 程式人生 > >MongoDB筆記篇

MongoDB筆記篇

 

MongoDB介紹

- 介紹:

MongoDB 是一個基於分散式檔案儲存的資料庫。
用 C++ 語言編寫。旨在為 WEB 應用提供可擴充套件的高效能資料儲存解決方案。

MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,
是非關係資料庫當中功能最豐富,最像關係資料庫的。

 

- MongoDB與關係型資料庫的區別(MySQL)

MongoDB和 關係型資料庫 最大的區別就是約束性,
可以說檔案型資料庫幾乎不存在約束性,
理論上沒有主外來鍵約束,沒有儲存的資料型別約束等等

關係型資料庫中有 
"" 的概念,有 "欄位" 的概念,有 "資料條目" 的概念 MongoDB中同樣有以上的概念,但是名稱發生了一些變化, 嚴格意義上來說,兩者的概念即為相似, 但又有些出入,不過無所謂,我們就當是以上概念就好啦

 

- MongoDB中儲存的“表”:

MongoDB中的資料的儲存方式類似與 JSON資料

MongoDB的每個表(Collection)中儲存的每條資料(Documents)都是一個一個的Json,
Json中的每一個欄位(Key)我們稱之為:Field

所以,Collection也就是關係型資料庫中""的概念,
Documents就是"資料條目
",Field就是"欄位"

 

- 安裝:

  - 官網下載地址:https://www.mongodb.com/

 

  - 下載msi安裝包,下載成功後 一路點點點即可;

 

  - 預設安裝路徑為:C:\Program Files\MongoDB\Server\3.4\

  

  - 將當前工作目錄下的 bin檔案加入環境變數:

  

  

  - CMD中開啟伺服器:輸入命令:mongod

    - 會報錯,報錯是因為在C盤根目錄下缺少了 data\db 兩個檔案;

    - 在C盤根目錄下建立這兩個檔案,重啟即可;

 

  - CMD開啟client:輸入命令:mongo

 

MongoDB中儲存的資料型別

- MongoDB中的十種資料型別:

Object  ID :Documents 自生成的 _id

String: 字串,必須是utf-8

Boolean:布林值,true 或者false (在Python中 True False 首字母大寫)

Integer:整數 (Int32 Int64 一般用Int32)

Double:浮點數 (沒有float型別,所有小數都是Double)

Arrays:陣列或者列表,多個值儲存到一個鍵 (list哦,相當於Python中的List哦)

Object:相當於Python中的字典,這個資料型別就是字典

Null:空資料型別 , 一個特殊的概念,None Null

Timestamp:時間戳

Date:儲存當前日期或時間unix時間格式 (我們一般不用這個Date型別,時間戳可以秒殺一切時間型別)

 

- Object ID:

  - 每條資料都會自動生成 Object ID;

  - 宇宙唯一,利用了時間和空間;

  - 補充:

示例:
"_id" : ObjectId("5b151f8536409809ab2e6b26")

#"5b151f85" 代指的是時間戳,這條資料的產生時間
#"364098" 代指某臺機器的機器碼,儲存這條資料時的機器編號
#"09ab" 代指程序ID,多程序儲存資料的時候,非常有用的
#"2e6b26" 代指計數器,這裡要注意的是,計數器的數字可能會出現重複,不是唯一的
#以上四種識別符號拼湊成世界上唯一的ObjectID
#只要是支援MongoDB的語言,都會有一個或多個方法,對ObjectID進行轉換
#可以得到以上四種資訊

#注意:這個型別是不可以被JSON序列化的

   

  - 在Python中如果想序列化 Object ID 先用 str() 轉換一下;

 

- String:

  - 正常的字串....... 加引號括起來

 

- Boolean:

  - 布林值 true 或者 false 首字母小寫

 

- Integer:

  - 整數

 

- Double:

  - 雙進準浮點數 就是 float

 

- Arrays:

  - 陣列,等同於python中的list

 

- Object:

  - 物件,等同於python中的dict

 

- Null:

  - 空值,等同於python中的None

 

- Timestamp:

  - 時間戳;

 

- Date:

  - 儲存當前日期或時間格式

  - 示例:

{
    "_id" : ObjectId("5b163ba1993ddc4cd4918eb2"),
    "name" : "LuffyCity",
    "date" : ISODate("2018-06-05T15:28:33.705+08:00")
}

 

 

MongoDB增刪改查

- 常用基本語法:

  - MongoDB 引用了不存在的物件即建立改物件;

意思就是
    MongoDB中如果你使用了不存在的物件,那麼就等於你在建立這個物件哦

    如果你建立的是表,但是表中沒有實際資料,則這張表不會儲存

 

  - 使用(建立)資料庫:

    - 語法: use 資料庫名字

    - 注意當 執行過上面的命令後,在MongoDB中 db 就代指當前是資料庫

  - 建立表:

    - 語法: db.表名

 

- 查:

  - find():條件查詢;

    - 無條件的話,預設查詢當前表的所有資料;

    - db.表名.fiand({age:19}); 查詢符合此條件的所有資料;

 

  - findOne():查詢一條資料;

    - 無條件的話,預設查詢當前表的第一條資料;

    - db.表名.findOne({age:19});加入條件的話,若有多條資料,返回最靠前的一條資料;

 

- 增:插入資料(insert     insertOne     insertMany)

  -  insert(): 插入一條或者多條資料,需要帶有允許插入多條的引數,這個方法目前官方已經不推薦

  - insertOne(): 插入一條資料,官方推薦

  - insertMany(): 插入多條資料,無需引數控制,官方推薦

 

- 改:修改資料(update updateOne updateMany)

  - update({"name":"DragonFire"},{$set:{"age":21}}): 根據條件修改該條資料的內容

  - updateOne():  根據條件修改一條資料的內容,如出現多條,只修改最靠前的資料

  - updateMany(): 根據條件修改所有資料的內容,多條修改

 

- 刪:刪除資料(remove):

  - remove({}): 無條件刪除資料,這裡要注意了,這是刪除所有資料,清空Collection

MongoDB的其他用法

- MongoDB中的關鍵字:

 

- MongoDB中修改器:

 

- MongoDB中Array補充用法:

 

pymongodb簡單用法