文檔型數據庫MongoDB

MongoDB是一個跨平臺的,面向文檔的數據庫薯蝎,是當前NoSQL數據庫產品中最熱門的一種导而。它介于關系數據庫和非關系數據庫之間,是非關系數據庫當中功能最豐富管挟,最像關系數據庫的產品轿曙。它支持的數據結構非常松散,是類似 JSON的BSON 格式僻孝,因此可以存儲比較復雜的數據類型导帝。
1、MongoDB適合的應用場景

數據量大穿铆、寫入操作頻繁和數據價值較低您单,比如社區(qū)的評論功能。

2荞雏、Docker環(huán)境下安裝MongoDB
docker run -di --name=onelun_mongo -p 27017:27017 mongo
3虐秦、常用命令
user <數據庫名稱> # 選擇和創(chuàng)建數據庫

db.<集合名稱>.insert(數據) # 插入文檔
db.spit.insert({content:"我很帥",userid:"1",visits:NumberInt(902)})
db.<集合名稱>.find() # 查詢集合
db.spit.find() # 查詢全部spit數據
db.spit.find({userid:"1"}) # 查詢userid為1的spit數據
db.spit.findOne({userid:"1"}) # 查詢1條userid為1的spit數據
db.spit.find().limit(3) # 查詢指定條數記錄
db.<集合名稱>.update(條件,修改后的數據) # 修改文檔
db.spit.update({_id:"1"},{visits:NumberInt(1000)}) # 修改_id為1的記錄,瀏覽量為1000凤优。
# 這時會發(fā)現數據只剩visits了悦陋,為了解決這個問題, 我們可以用$set修改器來實現筑辨,命令如下
db.spit.update({_id:"2"},{$set:{visits:NumberInt(2000)}}) # 
db.<集合名稱>.remove(條件) # 刪除文檔
db.spit.remove({}) # 刪除全部數據俺驶,慎用
db.spit.remove({visits:1000}) #刪除visits=1000的記錄
db.spit.count() # 統(tǒng)計記錄數
db.spit.count({userid:"1"}) # 統(tǒng)計userid為0的記錄數
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
db.spit.find({visits:{$gt:1000}}) # 查詢吐槽瀏覽量大于1000的記錄

db.spit.find({userid:{$in:["1013","1014"]}} # 包含查詢
db.spit.find({userid:{$nin:["1013","1014"]}} # 不包含查詢

$and:[ {  },{  },{ } ] # 條件查詢
$or:[ {  },{  },{   } ]
db.spit.find({$and:[{visits:{$gte:1000}},{visits:{$lt:2000}}]}) 
db.spit.find({$or:[{visits:{$gte:1000}},{visits:{$lt:2000}}]}) 
# 如果我們想實現對某列值在原有值的基礎上進行增加或減少挖垛,可以使用$inc運算符來實現
db.spit.update({_id:"1",{$inc:{visits:NumberInt(1)}}})
4痒钝、實例SpringDataMongoDB

pom.xml引入依賴

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐data‐mongodb</artifactId>
</dependency>

創(chuàng)建application.yml

spring:
    data:
        mongodb:
            host: 192.168.3.186
            database: spitdb

創(chuàng)建spit實體類

/**  
* 吐槽  
* @author Administrator
*/ 
public class Spit implements Serializable{
    @Id     
    private String _id;     
    private String content;
    private Date publishtime; 
    private String userid;     
    private String nickname;     
    private Integer visits;
    private Integer thumbup; 
    private Integer share;
    private Integer comment;     
    private String state;     
    private String parentid; 
    // getter and setter .....      
}

創(chuàng)建數據訪問接口

public interface SpitDao extends MongoRepository<Spit, String>{
    /**
    *根據上級ID查詢吐槽列表(分頁)
    */    
    public Page<Spit> findByParentid(String parentid,Pageable pageable);
}

業(yè)務邏輯SpitService類和控制層SpitController類

public Page<Spit> findByParentid(String parentid,int page, int size){
    PageRequest pageRequest = PageRequest.of(page‐1, size);
    return spitDao.findByParentid(parentid, pageRequest);
}
@RequestMapping(value="/comment/{parentId}/{page}/{size}",method=RequestM ethod.GET)
public Result findByParentid(@PathVariable String parentId,   @PathVariable int page,@PathVariable int size){
    Page<Spit> pageList = spitService.findByParentid(parentId,page,  size);
    return new Result(true,StatusCode.OK,"查詢成功",new  PageResult<Spit>(pageList.getTotalElements(), pageList.getContent()));
}

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市痢毒,隨后出現的幾起案子送矩,更是在濱河造成了極大的恐慌,老刑警劉巖哪替,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件栋荸,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機晌块,發(fā)現死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進店門爱沟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人匆背,你說我怎么就攤上這事呼伸。” “怎么了钝尸?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵括享,是天一觀的道長。 經常有香客問我珍促,道長铃辖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任猪叙,我火速辦了婚禮娇斩,結果婚禮上,老公的妹妹穿的比我還像新娘穴翩。我一直安慰自己犬第,他們只是感情好,可當我...
    茶點故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布藏否。 她就那樣靜靜地躺著瓶殃,像睡著了一般充包。 火紅的嫁衣襯著肌膚如雪副签。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天基矮,我揣著相機與錄音淆储,去河邊找鬼。 笑死家浇,一個胖子當著我的面吹牛本砰,可吹牛的內容都是我干的。 我是一名探鬼主播钢悲,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼点额,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了莺琳?” 一聲冷哼從身側響起还棱,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惭等,沒想到半個月后珍手,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年琳要,在試婚紗的時候發(fā)現自己被綠了寡具。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡稚补,死狀恐怖童叠,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情课幕,我是刑警寧澤拯钻,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站撰豺,受9級特大地震影響粪般,放射性物質發(fā)生泄漏。R本人自食惡果不足惜污桦,卻給世界環(huán)境...
    茶點故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一亩歹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凡橱,春花似錦小作、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坝撑,卻和暖如春静秆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背巡李。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工抚笔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人侨拦。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓殊橙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親狱从。 傳聞我的和親對象是個殘疾皇子膨蛮,可洞房花燭夜當晚...
    茶點故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內容

  • 天愈發(fā)冷了,前幾天眼看有回春跡象季研,這幾日卻又瞬間跌進了冰窟窿敞葛。 前兩天朋友來找我玩,說實話训貌,我的朋友圈很小制肮,初中的...
    訴舊閱讀 282評論 0 0
  • 哥哥學媽媽口氣:你快點吃飯并且用手指著弟弟豺鼻! 弟弟理直氣壯地說:你的手好臟呀综液!
    百合不香閱讀 113評論 0 1
  • 《一》 風輕揚起帆 清淺的光陰泛起漪漣 你駕著小船 載著一船星河燦爛 浪起水光十色的流年 我沒有多余的話 也沒有復...
    卿公子的小酒館閱讀 534評論 34 37