(1)數據量大
(2)價值較低
對於這樣的數據,更適合於使用MangoDB來存儲數據javascript
MangoDB是一個跨平臺的面向文檔(至關於Mysql中的一行記錄)的數據庫,是NoSql數據庫中最熱門的一種。它介於關係和非關係數據庫之間的,是非關係數據庫中功能最豐富,最像關係數據庫的產品,支持的數據很是鬆散,相似於JSON的BSON格式,所以能夠存儲比較複雜的數據類型
官網:[http://www.mangodb.org]java
MongoDB最大的特色就是他支持的查詢語言很是強大,語法相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據庫簡歷索引。它是一個面向集合的,模式自由的文檔型數據庫。正則表達式
特色:sql
MangoDB的邏輯結構是一種層次結構主要由:mongodb
文檔(document)、集合(collection)、數據庫(database)這三部分組成。夥計結構是面向用戶的,用戶使用MangoDB開發應用程序就是使用的邏輯結構docker
基本數據類型shell
null:用於表示空值或者不存在的字段{"x":null}數據庫
布爾型:布爾類型有兩個值true或者false {"x"true}json
數值:shell默認使用64位浮點型數值,{"x":3.14} 或 {"x":3.14}數組
對於整型可使用NumberInt(4字節符號整數)或NumberLong(8字節符號整數)
{"x":NumberInt(4)}{"x":NumberLong(4)}
字符串:UTF-8字符串均可以表示字符串類型的數據{"x":"呵呵"}
日期:日期被存儲爲自新紀元依賴通過的毫秒數,不存儲時區,{"x":new Date()}
正則表達式:查詢時,使用正則表達式做爲限定條件,語法與JavaScript的正則表達式相同,{「x」😕[abc]/}
數組:數據列表或數據集能夠表示爲數組,{「x」: [「a「,「b」,」c」]}
內嵌文檔:文檔能夠嵌套其餘文檔,被嵌套的文檔做爲值來處理,{「x」:{「y」:3 }}
對象Id:對象id是一個12字節的字符串,是文檔的惟一標識,{「x」: objectId() }
二進制數據:二進制數據是一個任意字節的字符串。它不能直接在shell中使用。若是要將非utf-字符保存到數據庫中,二進制數據是惟一的方式。
代碼:查詢和文檔中能夠包括任何JavaScript代碼,{「x」:function(){/…/}}
一直下一步
C:\Program Files\MongoDB\Server\3.2\bin 設置到環境變量path中
啓動
(1)首先打開命令提示符,建立一個用於存放數據的目錄 md d:\data
(2)啓動服務
mongod ‐‐dbpath=d:\data
--dbpath=指定數據文件路徑
咱們在啓動信息中能夠看到,mongoDB的默認端口是27017
若是咱們想改變默認的啓動端口,能夠經過--port來指定端口
在命令提示符輸入如下命令便可完成登錄
mongo
退出mongodb
exit
在宿主機建立mongo容器
docker run ‐di ‐‐name=tensquare_mongo ‐p 27017:27017 mongo
遠程登錄
mongo 192.168.184.134
遠程登錄mongo 192.168.184.134
選擇和建立數據庫的語法格式:
use 數據庫名稱
若是數據庫不存在則自動建立
如下語句建立spit數據庫
use spitdb
若是數據庫不存在則自動建立
如下語句建立spit數據庫
use spitdb
插入文檔的語法格式:
db.集合名稱.insert(數據);
咱們這裏能夠插入如下測試數據:
db.spit.insert({content:"哈哈",userid:"1011",nickname:"小 雅",visits:NumberInt(902)})
查詢集合的語法格式:
db.集合名稱.find()
若是咱們要查詢spit集合的全部文檔,咱們輸入如下命令
db.spit.find()
這裏你會發現每條文檔會有一個叫_id的字段,這個至關於咱們原來關係數據庫中表的主
鍵,當你在插入文檔記錄時沒有指定該字段,MongoDB會自動建立,其類型是ObjectID
類型。若是咱們在插入文檔記錄時指定該字段也能夠,其類型能夠是ObjectID類型,也
能夠是MongoDB支持的任意類型。
輸入如下測試語句:_
db.spit.insert({_id:"1",content:"我仍是沒有想明白到底爲啥出 錯",userid:"1012",nickname:"小明",visits:NumberInt(2020)}); db.spit.insert({_id:"2",content:"加班到半夜",userid:"1013",nickname:"凱 撒",visits:NumberInt(1023)}); db.spit.insert({_id:"3",content:"手機流量超了咋 辦?",userid:"1013",nickname:"凱撒",visits:NumberInt(111)}); db.spit.insert({_id:"4",content:"堅持就是勝利",userid:"1014",nickname:"諾 諾",visits:NumberInt(1223)});
若是我想按必定條件來查詢,好比我想查詢userid爲1013的記錄,怎麼辦?很簡單!只
要在find()中添加參數便可,參數也是json格式,以下:
db.spit.find({userid:'1013'})
若是你只須要返回符合條件的第一條數據,咱們可使用findOne命令來實現
db.spit.findOne({userid:'1013'})
若是你想返回指定條數的記錄,能夠在find方法後調用limit來返回結果,例如:
db.spit.find().limit(3)
修改文檔的語法結構:
db.集合名稱.update(條件,修改後的數據)
若是咱們想修改_id爲1的記錄,瀏覽量爲1000,輸入如下語句:
db.spit.update({_id:"1"},{visits:NumberInt(1000)})
執行後,咱們會發現,這條文檔除了visits字段其它字段都不見了,爲了解決這個問題,咱們須要使用修改器$set來實現,命令以下:
這樣就OK啦。
db.spit.update({_id:"2"},{$set:{visits:NumberInt(2000)}})
刪除文檔的語法結構:
db.集合名稱.remove(條件)
如下語句能夠將數據所有刪除,請慎用
db.spit.remove({})
若是刪除visits=1000的記錄,輸入如下語句
db.spit.remove({visits:1000})
統計記錄條件使用count()方法。如下語句統計spit集合的記錄數
db.spit.count()
若是按條件統計 ,例如:統計userid爲1013的記錄條數
db.spit.count({userid:"1013"})
MongoDB的模糊查詢是經過正則表達式的方式實現的。格式爲:
/模糊查詢字符串/
例如,我要查詢吐槽內容包含「流量」的全部文檔,代碼以下:
db.spit.find({content:/流量/})
若是要查詢吐槽內容中以「加班」開頭的,代碼以下:
db.spit.find({content:/^加班/})
db.集合名稱.find({ "field" : { $gt: value }}) // 大於: field > value db.集合名稱.find({ "field" : { $lt: value }}) // 小於: field < value db.集合名稱.find({ "field" : { $gte: value }}) // 大於等於: field >= value db.集合名稱.find({ "field" : { $lte: value }}) // 小於等於: field <= value db.集合名稱.find({ "field" : { $ne: value }}) // 不等於: field != value
包含使用$in
操做符。
示例:查詢吐槽集合中userid字段包含1013和1014的文檔
db.spit.find({userid:{$in:["1013","1014"]}})
不包含使用$nin操做符。
示例:查詢吐槽集合中userid字段不包含1013和1014的文檔
db.spit.find({userid:{$nin:["1013","1014"]}})
咱們若是須要查詢同時知足兩個以上條件,須要使用$and操做符將條件進行關聯。(至關於SQL的and)
格式爲:
$and:[ { },{ },{ } ]
示例:查詢吐槽集合中visits大於等於1000 而且小於2000的文檔
db.spit.find({$and:[ {visits:{$gte:1000}} ,{visits:{$lt:2000} }]})
若是兩個以上條件之間是或者的關係,咱們使用 操做符進行關聯,與前面 and的使用
方式相同
格式爲:
$or:[ { },{ },{ } ]
示例:查詢吐槽集合中userid爲1013,或者瀏覽量小於2000的文檔記錄
db.spit.find({$or:[ {userid:"1013"} ,{visits:{$lt:2000} }]})
若是咱們想實現對某列值在原有值的基礎上進行增長或減小,可使用$inc運算符來實現
db.spit.update({_id:"2"},{$inc:{visits:1}} )