走向全棧之MongoDB的使用

初識MongoDB

c0c3b6db012407c33c079ef5f2f1fa6b.jpg

MongoDB 是一個基於分佈式文件存儲的數據庫。由 C++ 語言編寫。旨在爲 WEB 應用提供可擴展的高性能數據存儲解決方案。MongoDB 是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。html

爲何選擇MongoDB

網上搜索的結果說mongodb插入效率比mysql高雲雲的。。
不過主要應該是由於json的緣故,爲何json呢,由於圍繞json有不少可用的開源產品,好比elasticsearchmysql

不過依我看,最主要的緣由就是其對JavaScript良好的支持吧sql

安裝MongoDB

官方下載地址mongodb

咱們也能夠利用homebrew和docker等第三方工具來進行MongoDB的安裝docker

可視化工具

在這裏我推薦Robomongo
沒有緣由,就是用着還挺順手 -。-shell

啓動MongoDB

打開終端,執行sudo mongod --config /usr/local/etc/mongod.conf啓動MongoDB,再另開一個終端輸入mongo就能成功打開mongo shell並進行我們的操做了數據庫

界面以下json

QQ20170306-095751@2x.png

若是須要退出MongoDB,按下control+c便可
注意:以上均在mac環境下成功實現,win 下本人還何嘗試..下次找個機會試試api

終於到了MongoDB操做時間

請開始咱們的表演elasticsearch

插入數據

先利用use trevor-mongo建立一個名爲trevor-mongo的數據庫
QQ20170306-191659@2x.png

能夠看到已經自動切換至trevor-mongo這個數據庫,如今就能夠利用db.test.insertOne({title: "第一條數據"})來插入一條數據

若是在數據庫中沒有數據表,MongoDB則會自動給你建立數據表
QQ20170306-192735@2x.png

就這樣,恭喜你,已經在test數據表裏面添加了第一條數據

查詢數據

在上面咱們已經添加了一條數據,那麼如今能夠在終端裏面輸入db.test.find({})來查詢test數據表下的全部數據
QQ20170306-193727@2x.png

大夥有沒有以爲_id很煩人??
其實咱們徹底能夠將它過濾掉
QQ20170306-194111@2x.png

db.test.find({}, {_id: 0, title: 1})這條命令裏面,第一個大括號裏面應該寫入篩選條件,若是爲空,則默認爲all。第二個大括號則是用來放數據顯示條件,0表明不現實,1表明顯示

修改(更新)數據

咱們能夠利用db.test.updateOne({},{$set: {des: "no.1"}})來爲數據添加一個des字段,再查尋一下
QQ20170306-200002@2x.png

bingo!更新成功

刪除數據

利用db.test.deleteOne({title: "第一條數據"}),咱們能夠刪除從開頭起第一個title"第一條數據"的文檔

就這樣,咱們已經將最簡單的操做給過了一遍,是否是很簡單?因此說MongoDB對初學者真的很友好

進階

在這以前,推薦先去看看MongoDB基本命令

如今,咱們能夠利用豆瓣開發者api來模擬一些數據

首先我們先GET一下豆瓣電影top250的數據
QQ20170306-191138@2x.png

subjects裏面的數據複製並打開編輯器,輸入
QQ20170306-202430@2x.png

將這些代碼粘貼至mongo shell並執行,這樣就在數據庫下成功建立了一個名爲movies的數據表。

這時咱們能夠利用Robomongo來查看數據
首先是鏈接數據庫,MongoDB默認端口號爲27017
QQ20170306-202949@2x.png

如今開始有目的性的查詢數據

假設我們有個需求,須要得到評分9.2以上的全部電影,而且只需顯示電影名(title),電影評分(rating.average)以及電影年份(year)並將它們升序排列輸出

這說白了就是一個條件查詢
代碼以下:

db.movies.find({"rating.average": {$gt: 9.2}}, {title: 1, year: 1, "rating.average": 1, _id: 0}).sort({"rating.average": 1})

QQ20170306-204437@2x.png

就這樣成功完成查詢,是否是很簡單?

就這樣,祝你們 have a nice day ; )

相關文章
相關標籤/搜索