Windows下MongoDB基本操作詳解
什麼是MongoDB
以下摘自百度百科:
MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。
非關係資料庫
NOSQL泛指非關係型資料庫,英文全稱為Not Only SQL,以下摘自百度百科:
隨著網際網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS型別的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。
NoSQL資料庫的產生就是為了解決大規模資料集合多重資料種類帶來的挑戰,尤其是大資料應用難題。
MongoDB的優勢
- 容易擴充套件,去掉關係型資料庫的關係特性;
- 大資料量,高效能,具有非常高的讀寫特性;
- 靈活的資料模型,NOSQL無需事先為要儲存的資料建立欄位,隨時可以儲存自定義的資料格式。
安裝MongoDB
MongoDB官方下載地址:https://www.mongodb.com/download-center/community
我選擇的是MSI格式的安裝包,下載完成後,安裝介面如下圖,按照提示進行安裝即可。
MongoDB是以命令列的方式進行操作,如果初學者不習慣這種方式,可以安裝MongoDB的可是化工具,我選擇的是Robo 3T,官方下載地址:https://robomongo.org/
我選擇的是下載exe格式的安裝檔案,安裝介面如下圖,按照提示安裝即可。
MongoDB的基本操作
MongoDB的中文版教程地址:http://www.runoob.com/mongodb/mongodb-tutorial.html
1.建立、檢視、刪除資料庫
- 檢視當前的資料庫:
db
- 檢視所有的資料庫:
show dbs
- 切換資料庫:
use 資料庫名稱
- 刪除當前的資料庫:
db.dropDatabase()
2.建立、檢視、刪除集合
- 手動建立集合:
db.createCollection(name,options)
引數說明:name
:要建立的集合的名稱option
db.createCollection("praite")
db.createCollection("praite",{capped:true,size:10})
引數說明:capped
:預設為false,如果設定為true,則建立固定大小的集合,當達到最大值時,會自動覆蓋最早的文件。當設定為true時,必須指定size
引數。size
:為固定大小的集合指定一個最大值,以位元組計。
- 不手動建立集合:向不存在的集合第一次加入資料時,集合會被自動創建出來。
- 檢視集合:
show collectinos
- 刪除集合:
db.集合名稱.drop()
3.插入資料
- 語法:
db.集合名稱.insert(document)
db.pirate.insert({name:"路飛",gender:1,hometown:"風車村",age:19})
db.pirate.insert({_id:"20181126",name:"路飛",gender:1,hometown:"風車村",age:19})
顯示結果如下:
- 插入文件時,如果不指定
_id
引數,MongoDB會為文件分配一個唯一的ObjectID
,如果_id
存在則會報錯如下圖所示。
4.儲存資料
- 語法:
db.集合名稱.save(document)
- 與
insert
不同的是,如果文件的_id
存在則修改,如果文件的_id
不存在則新增,如下圖所示。
db.pirate.save({_id:"20181126",name:"山治",gender:0,hometown:"傑爾馬66王國",age:21})
db.pirate.save({_id:"2018112601",name:"布魯克",gender:1,hometown:"西海",age:90})
5.更新資料
- 語法:
db.集合名稱.update(<query>,<update>,{multi:<boolean>})
引數說明:query
:update的查詢條件update
:update的物件和一些更新的操作符multi
:可選,預設為false,表示只更新找到的第一條記錄,若值為true表示把滿足條件的文件全部更新。
db.pirate.update({name:"路飛"},{name:"蒙奇·D·路飛"})
db.pirate.update({name:"索隆"},{$set:{name:"羅羅諾亞·索隆"}})
db.pirate.updata({gender:1},{$set:{gender:0}},{multi:true})
- 注意:
$set
表示只更新響應的值,如下圖所示。
6.刪除資料
- 語法:
db.集合名稱.remove(<query>,{justOne:<boolean>})
引數說明:query
:可選,刪除的文件的條件justOne
:可選,過個設為true或1,則只刪除一個文件
db.pirate.remove({age:19})
7.查詢資料
- 語法:
db.集合名稱.find({條件}) - 如果要是顯示內容美觀化,可以使用pretty()方法:
db.集合名稱.find({條件}).pretty()
db.pirate.find({age:17}).pretty()
- 比較運算子
- 小於:
$lt
- 小於等於:
$lte
- 大於:
$gt
- 大於等於:
$gte
- 不等於:
$ne
db.pirate.find({age:{$gte:20}})
- 小於:
- 邏輯運算子
- AND: 在find()方法中傳入多個鍵(key),每個鍵(key)以逗號隔開,語法如下:
db.集合名稱.find({key1:value1, key2:value2})
- OR:使用關鍵字
$or
,語法如下:
db.集合名稱.find({$or:[{key1:value1}, {key2:value2}]})
- AND和OR可以一起使用:
db.pirate.find({$or:[{age:{$gte:20}}, {gender:1}],hometown:"西海"})
- limit()和skip()
- limit()方法語法:
db.集合名稱.find().limit(NUMBER)
- skip()方法語法:
db.集合名稱.find().skip(NUMBER)
- limit()方法和skip()方法可以一起使用:
db.pirate.find().skip(4).limit(2)
8.排序
- 語法:
db.集合名稱.find().sort({欄位名稱:1,欄位名稱:-1,...})
引數說明:1表示升序,-1表示降序
db.pirate.find().sort({age:1,gender:-1})
9.統計個數
- 語法:
db.集合名稱.find({條件}).count()
db.集合名稱.count({條件})
db.pirate.find({gender:0}).count()
db.pirate.count({age:{$gt:20},gender:1})
結語
- 本篇主要介紹了MongoDB的基本操作方法,包括建立、插入、儲存、查詢等方法。
- 本篇內容適合剛接觸MongoDB的學習者。
- 最後,感謝大家的閱讀。