標籤:date 的區別 編寫 win update 控制 連結 copy set
一.初識MongoDB
MongoDB 是一個基於分布式檔案儲存體的資料庫。由 C++ 語言編寫。旨在為 WEB 應用提供可擴充的高效能資料儲存解決方案。
MongoDB 是一個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。
它和我們使用的關係型資料庫最大的區別就是約束性,可以說檔案型資料庫幾乎不存在約束性,理論上沒有主外鍵約束,沒有儲存的資料類型約束等等
關係型資料庫中有一個 "表" 的概念,有 "欄位" 的概念,有 "資料條目" 的概念
MongoDB中也同樣有以上的概念,但是名稱發生了一些變化,嚴格意義上來說,兩者的概念即為相似,但又有些出入,不過無所謂,我們就當是以上概念就好啦
光說的話,還是有點兒模糊,就讓我們來做一個小例子,進行一個對比吧
下面我們做一張表:
這是我們用關係型資料庫做的一張很簡單的User表對吧
接下來我們再看一下MongoDB的資料結構:
這......這特麼不就是個列表,裡面放著三個字典嗎?你說的對,如果你理解成了列表和字典,那麼證明了你只會Python,在其他語言中它又是別的類型了,我們把這種類型的玩意兒,叫做:Json
MongoDB的每個表(Collection)中儲存的每條資料(Documents)都是一個一個的Json,Json中的每一個欄位(Key)我們稱之為:Field
就此我們引出了三個關鍵字,Collection也就是關係型資料庫中"表"的概念,Documents就是"資料條目",Field就是"欄位"
二.MongoDB安裝部署
關於MongoDB的安裝
首先分享給你一個MongoDB 3.4的msi安裝包 點擊這裡可以下載
安裝完成之後,開始進入配置環節,首先我們要進入目錄:
"C:\Program Files\MongoDB\Server\3.4\bin"
配置環境變數
之後的操作,windows 7 與 windows 10 不太一樣,大同小異
windows 10 一路到底的"確定"
windows 7 在這裡需要注意的是,Path路徑移動到最後,輸入:" ;C:\Program Files\MongoDB\Server\3.4\bin " 一定要帶上 "
OK!到了這裡我們基本已經完成了部分操作了
我們來試一下成果吧
開啟cmd視窗
那我們來建立一個" C:\data\db\ "的目錄
好了目錄已經有了,再次試一下
好了開啟成功了
那麼服務開啟了,用戶端怎麼去串連呢,這時我們需要另一個cmd視窗開啟mongo的用戶端
到此,我們成功的完成了,服務端的部署開啟,還有用戶端的連結
提示:千萬別把這兩個cmd視窗關了,不然你還得重新開啟一次
三 MongoDB基本操作一 建立庫和表
建立資料庫:這裡和一般的關係型資料庫一樣,都要先建立一個自己的資料庫空間
是的,MongoDB設計的比較隨意,沒有就認為你是在建立,use LuffyCity_Com是不存在的,所以MongoDB就認為你是要建立並使用
這個概念一定要記清楚哦,MongoDB中如果你使用了不存在的對象,那麼就等於你在建立這個對象
使用了不存在的對象,就代表建立對象,我們使用這一謬論建立一張表(Collection)試試
看來真的不是謬論,真的成功的建立了一個Oldboy的Collection
那麼接下來就是在表(Collection)中添加一條資料了,怎麼添加呢?
二. MongoDB 之 插入資料
insert:插入一條或者多條資料,需要帶有允許插入多條的參數,這個方法目前官方已經不推薦
db.Oldboy.insert({"name":"DragonFire","age":20})
insertOne: 插入一條資料,官方推薦
我們可以看出來兩種方法的傳回值截然不同
insertMany:插入多條資料,無需參數控制,官方推薦
這就是我們向LuffyCity_Com.Oldboy中插入了多條資料:
[{ "name":"DragonFire", "age":20 },
{
"name":"WuSir",
"age":19
}]
這裡留下一個資料類型的懸念
插入完成就要查詢
三. MongoDB 之 查詢資料
這裡不是Mysql 中的 select
find() 無條件尋找:將該表(Collection)中所有的資料一次性返回
db.Oldboy.find({name:"WuSir2b"}) 條件尋找:name等於WuSir2b的資料,這裡會返回多條結果
"_id":ObjectId是什麼,我們插入的時候並沒有一個欄位(Field)並沒有_id這個,
這是MongoDB自動給我們添加到系統唯一標識"_id" 是一個ObjectId 類型
findOne()無條件尋找一條資料,預設當前Collection中的第一條資料
findOne({age:19}) : 條件尋找一條age等於19的資料,如有多條資料則返回更靠前的資料
查詢資料的時候,發現了有些資料出現錯誤了,要修改怎麼辦呢?
四.MongoDB 之 修改資料
update({"name":"DragonFire"},{$set:{"age":21}}):根據條件修改該條資料的內容,跟insert一樣,不推薦update的寫法
把name等於DragonFire中的age改為21,這裡要注意的是({"條件"},{"關鍵字":{"修改內容"}}),其中如果條件為空白,那麼將會修改Collection中所有的資料
updateOne({"age":19},{$set:{"name":"WSSB"}}):根據條件修改一條資料的內容,如出現多條,只修改最高前的資料
把age等於19的所有資料中第一條資料的name改為WSSB
updateMany({"age":19},{$set:{"name":"pig_qi"}}):根據條件修改所有資料的內容,多條修改
把age等於19的所有資料中的name改為WSSB
那麼我們之前說過MongoDB的靈活性,沒有就代表我要建立,所以說如果該條Documents沒有name屬性,他就會自動建立一個name屬性並且賦值為"WSSB"
更改了半天,我覺得,這些資料我都不想要了,該怎麼辦呢?
五.MongoDB 之 刪除資料
remove({}):無條件刪除資料,這裡要注意了,這是刪除所有資料,清空Collection
remove({"name":"DragonFire"}) : 條件刪除name等於"DragonFire"的所有Document
之後我們來說一下MongoDB的資料類型,跟你們透漏一下,MongoDB的資料類型
MongoDB一 之增刪改查