- 分類【有沒有表】
- 關係型【sql】數據庫
- 非關係型【Nosql】數據庫
- 表明:MongoDB
- 組成
- 文檔中存儲的是鍵值對,相似於json
- MongoDB的數據類型是:bson
- bson是json 的超集,能夠存儲二進制【圖片,視頻,音頻】
- 分佈式
- 前端: 相似 模塊化
- Java: 微服務 、 分佈式 springboot[框架]
- 大數據: 微服務 分佈式 hadoop [框架]
- Php: ThinkPhp [框架]
。。。。。。。。。。。。。前端
Mongo數據庫
安裝git
一直next便可,在遇到 I accept the terms in the License Agreement 時取消勾選sql
MongoDB的安裝
-
對mongodb數據庫的操做是經過執行命令來完成的,個人電腦裏面這些命令安裝在: C:\Program Files\MongoDB\Server\3.2\binmongodb
-
要執行這些命令,須要以管理員身份運行cmd( 不建議用git來操做,由於git不是utf-8編碼,會有中文亂碼問題)。 打開開始菜單,找到命令提示符,在上面點擊右鍵,選擇以管理員身份運行。數據庫
-
要想執行mongodb的命令,須要cd到他的安裝目錄下面的bin文件夾下。json
爲了在dos窗口的任何目錄下都能執行mongo的命令,須要先設置環境變量,由於計算機在執行命令的時候會在環境變量中找對應的命令。windows
-
設置環境變量數組
- 右鍵點擊此電腦,點擊屬性,找到高級系統設置點擊,找到右下角環境變量,找到path變量點擊編輯,新建輸入C:\Program Files\MongoDB\Server\3.2\bin
-
建立文件夾(重點) 若是已經有data/log目錄了就能夠不作了
- 在d盤創建一個文件夾mongodb,而且創建子目錄db和log.
- 在log目錄下創建一個文件MongoDB.log ,後綴爲.log. d:\mongodb\db、d:\mongodb\log, 分別用來存放數據庫文件和數據庫日誌文件.
- 把mongodb文件夾的只讀屬性去掉。
6.啓動MongoDB
- 以管理員身份運行cmd.exe,進入dos命令界面,執行下列命令
mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log"
- 將MongoDB安裝爲windows服務(重點中的重點)
- 以管理員身份運行cmd,進入bin文件夾,執行下列命令
mongod --storageEngine mmapv1 --dbpath "d:\mongodb\db" --logpath "d:\mongodb\log\MongoDB.log" --install --serviceName "MongoDB"
- NET START MongoDB 啓動
- 先 ctrl+c 關閉服務:net stop MongoDB
MongoDB基礎使用
- 經常使用的命令(重點)
-
help 查看幫助
- 顯示數據庫列表 > show dbs
- 建立數據庫 > use dbname
-
db.web.save({"key":"value"}) 增長數據
-
刪除數據(重點中的重點)
- 刪除文檔
- db.users.remove({}) 刪除users集合下全部數據
- db.users.remove({"name": "lecaf"}) 刪除users集合下name=」lecaf」的數據
- 刪除集合
- db.users.drop()或db.runCommand({"drop":"users"}) 刪除集合users
- 刪除數據庫
- db.runCommand({"dropDatabase": 1}) 刪除當前數據庫
-
查找數據(重點中的重點)
- db.users.find() 查找users集合中全部數據
- db.users.findOne()查找users集合中的第一條數據
- db.users.find().pretty()格式化查詢到的數據
-
修改數據(重點中的重點) db.web.update({"name":"a1"}, {$set: {sex:」women」}},true,true)修改name=a1的數據爲sex=1,第一個參數是查找條件,第二個參數是修改內容,主鍵不能修改,第三個參數表示匹配全部符合條件的數據,第四個參數表示修改全部匹配到的數據
- MongoDB高級命令(重點)
- 條件查找
- db.collection.find({ "key" : value }) 查找key=value的數據
- db.collection.find({ "key" :{ $gt: value }}) key > value
- db.collection.find({ "key" :{$lt: value }}) key < value
- db.collection.find({ "key" :{ $gte: value }}) key >= value
- db.collection.find({ "key" :{$lte: value }}) key <= value
- db.collection.find({ "key" :{ $gt: value1 , $lt: value2}}) value1 < key <value2
- db.collection.find({ "key" :{$ne: value }}) key <> value 匹配不等於該值的
- db.collection.find({ "key": { $mod : [ 10 , 1 ] } }) 取模運算,條件至關於key % 10 == 1 即key除以10餘數爲1的
- db.collection.find({"key": { $in: [ 1, 2, 3 ] } }) 屬於,條件至關於key等於[ 1, 2, 3 ]中任何一個
- db.collection.find({"key": { $nin: [ 1, 2, 3 ] } }) 不屬於,條件至關於key的值不屬於[ 1, 2, 3 ]中任何一個。
- db.collection.find({ "key": { $size: 1 } })$size 數量、尺寸,條件至關於key對應的值的數量是1(值必須是數組)
- db.collection.find({ "key": { $exists : true|false } }) $exists字段存在,true返回存在字段key的數據,false返回不存在字段key的數據
- db.collection.find({ $or : [{a : 1}, {b : 2} ] })符合兩個條件中任意一個的數據。$or語法表示或的意思。
- 排序
- db.collection.find().sort({ "key1" : -1 ,"key2" : 1 }) 這裏的1表明升序,-1表明降序
- 其餘
- db.collection.find().limit(5) 控制返回結果數量,若是參數是0,則沒有約束,limit()將不起做用
- db.collection.find().skip(5) 控制返回結果跳過多少數量,若是參數是0,則看成沒有約束,skip()將不起做用,或者說跳過了0條
- db.collection.find().skip(5).limit(5) 可用來作分頁,跳過5條數據再取5條數據
- db.collection.find().count() count()返回結果集的條數
- db.collection.find().skip(5).limit(5).count(true) 在加入skip()和limit()這兩個操做時,要得到實際返回的結果數,須要一個參數true,不然返回的是符合查詢條件的結果總數