1.NoSQL 介紹
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是 SQL”, 它指的是非關系型的數據庫,是以 key-value形式存儲,和傳統的關系型數據庫不一樣, 不一定遵循傳統數據庫的一些基本要求,比如說遵循 SQL 標準、ACID 屬性、表結構等等。 NoSQL 最早被提出是在 20 世紀 80 年代,在當時更多是強調的是與關系數據庫區別對待, 最近這些年被提及的更多是強調協助解決大數據等相關問題。 NoSQL 在大數據時代有自己的意義。
2.NoSql 和傳統數據庫簡單對比。
非結構型數據庫。 沒有行、列的概念。 用 JSON 來存儲數據。(對于不會sql的人可以降低學習成本。)
3.MongoDb 介紹
MongoDB 是一個介于關系數據庫和非關系數據庫之間的產品, 是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似 json 的 bson 格式,因此可以存儲比較復雜的數據類型。 Mongo 最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言, 幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。它的特點是高性能、 易部署、易使用, 存儲數據非常方便。
4.MongoDb 安裝
官網下載: https://www.mongodb.com/
我下載的是這個版本:
安裝過程可能遇到:無法安裝圖形化界面compass,導致安裝一直卡住。可以關閉窗口重新安裝,重新安裝時取消勾選安裝圖形化界面compass。
安裝完成后配置環境變量將bin
路徑加入到系統的path
環境變量中。
打開 cmd 輸入 : mongo
命令看看是否成功。如果出來下圖說明 mongodb
配置成功。
5. 使用 MongoDb
(1)先新建一個存放數據庫的文件夾, 注意:不能有中文和空格,建議不要放在 C 盤
(2)啟動 MongoDb 服務
mongod 開啟數據庫服務命令: mongod --dbpath D:\mongodb
(3)客戶端輸入命令連接服務端:mongo
6.建庫、建表、查、改、增、刪
(1)命令:use person
如果person數據庫存在,則進入數據庫。
如果數據庫未創建, 那么必須創建一個表并插入一個數據以來創建該數據庫。
數據庫中不能直接插入數據,只能往集合(collections)中插入數據。 不需要專門創建集合,只需要寫點語法插入數據就會創建集合student:
db.student.insert({“name”:”xiaoming”})
(2)命令:show dbs,可以看到所有的數據庫,包括剛才創建的person,前面三個是本來就有的。
(3)命令:show collections,查看數據庫中的表。還是要先進入數據庫,下圖可看到剛才創建的student表。
(4)刪除數據庫與刪除表:
刪除當前所在的數據庫:
db.dropDatabase()
刪除指定的表: db.collections_name.drop()
db.student.drop()
ps:關于如何修改數據庫名稱:https://segmentfault.com/q/1010000000694527
(5)插入(增加) 數據:
db.表名.insert({"name":"zhangsan"})
(6)查詢:先列這幾條。
1、查詢所有記錄
db.student.find()
相當于: select* from student;
2、查詢去掉后的當前聚集集合中的某列的重復數據
db.student.distinct("name")
會過濾掉 name 中的相同數據
相當于: select distict name from student;
3、查詢 age = 22 的記錄
db.student.find({"age": 22})
相當于: select * from student where age = 22。
4、匹配的數據的數量:count()
db.student.find({"age": 22}).count()
明天再寫了。今天浪費了許多時間,很難受。
更多關于查詢:
http://www.jb51.net/article/48216.htm
http://blog.csdn.net/sgear/article/details/8649550
(7)修改數據
1.查找名字叫做小明的,把年齡更改為 16 歲:
db.student.update({"name":"xiaoming"},{$set:{"age":16}})
2.更改所有匹配項目:
默認下,update()只更改第一個匹配項,但在方法傳入第三個參數為{multi: true}時,可更改所有匹配項。
db.student.update({"sex":"男"},{$set:{"age":33}},{multi: true})
3.完全替換, 不出現$set 關鍵字了: 注意
例:db.student.remove({"name": "xiaoming"});
(8)刪除數據:
db.collectionsName.remove( { "borough": "Manhattan" } )
默認下,remove()會刪除所有的匹配項。可傳入第二個參數{justOne: true}來只刪除第一個匹配項。
db.student.remove( { "age": 18}, { justOne: true } )
清空表中所有數據:
db.student.remove({})
刪除文檔是永久性的,不能撤銷,也不能恢復的。因此,在執行remove()函數前先用find()命令來查看下是否正確。
7.關于ObjectId
http://www.runoob.com/mongodb/mongodb-objectid.html
MongoDB中的文檔(對象)必須有一個"_id"鍵。這個鍵的值可以是任何類型的,默認是個ObjectId對象。
在一個集合里面,每個文檔都有唯一的"_id"值,來確保集合里面每個文檔都能被唯一標識。
MongoDB采用ObjectId,而不是其他比較常規的做法(比如自動增加的主鍵)的主要原因,因為在多個 服務器上同步自動增加主鍵值既費時又費力。
當需要通過"_id"來查找對象時,不能直接查找,要先轉化為ObjectID對象:
var ObjectID = require('mongodb').ObjectID;
var id = new ObjectID(id);
8.Nodejs 自啟動工具 supervisor
supervisor 會不停的 watch 你應用下面的所有文件,發現有文件被修改,就重新載入程序文件這樣就實現了部署,修改了程序文件后馬上就能看到變更后的結果。(但是當有錯誤時還是要重新啟動。)
(1) 首先安裝 supervisor
npm install -g supervisor
(2) 使用 supervisor 代替 node 命令啟動應用(要是命令再短點就更好了)
如有錯誤請斧正,感謝大家。