MongoDB基本使用

本文不想文縐縐的去分析MongoDB內部的數(shù)據(jù)存儲結構,只是想單純的從用的方面給大家一些指導耽梅,也不能說是指導马绝,也是我最近學習祭埂,并且從實戰(zhàn)中總結的夜赵。

啟動和停止MongoDB

相信很多人和我這個小白一樣果录,剛接觸MongoDB悟民,連打開也不會诽嘉。WTF,誰叫我們水呢侠姑,只能慢慢嘗試创橄,慢慢踩踩坑。

在安裝完Mongo之后莽红,MongoDB 默認存儲數(shù)據(jù)目錄為/data/db/ (或者 c:\data\db), 默認端口 27017妥畏,默認 HTTP 端28017。當然也可以通過修改參數(shù)來改變默認路徑安吁。只需要修改位置參數(shù)dbpath 參數(shù): mongod --dbpath=/data/db醉蚁。在安裝完MongoDB之后,命令行會出現(xiàn)啟動和配置Mongodb的一些參數(shù)鬼店。

mongo參數(shù)

這些指令包括通過 brew services start mongodb在系統(tǒng)啟動的時候啟動mongo网棍,通過執(zhí)行mongod --config /usr/local/etc/mongod.conf
來立即啟動mongo,這是一種通過命令配置文件啟動db的方式。主要啟動的方式有以下3種,第三種還沒嘗試出來妇智,提供方式滥玷,有興趣的朋友可以找來告訴我一下,十分感謝巍棱。

  1. 命令行方式mongod --dbpath=/data/db,可能需要權限加上(加上sudo就好了)惑畴,打開在/data/db上數(shù)據(jù)庫。
  2. 配置文件方式航徙。mongod -f /etc/mongodb.cnf
  3. Daemon 方式啟動,即關閉終端的時候也能進行訪問mongod --dbpath=/data/db --fork如贷,會提示你用上-logpath

停止mongo只需要按住control+c就可以停止到踏,或者找到mongo進程杠袱,直接殺死就可以。

定義和設置mongo模型

MongoDB的邏輯結構是一種層次結構窝稿,主要由:文檔(document)霞掺、集合(collection)、數(shù)據(jù)庫(database)這三部分組成的讹躯。

  1. 文檔:是由鍵值對組成,相當于數(shù)據(jù)庫中的一行數(shù)據(jù)
  2. 集合: 多條記錄缠劝,數(shù)據(jù)庫中的表
  3. 數(shù)據(jù)庫: 多個集合

mogoose的使用

說了文章會在使用的角度來講mongodb潮梯,所以這里我們采用mogoose來定義mongo的模型。
模式為集合中文檔定義字段和字段類型惨恭。mongo支持以下幾種基本數(shù)據(jù)類型

  1. String
  2. Number
  3. Date
  4. Buffer
  5. Boolean
  6. Mixed
  7. ObjectId
  8. Array

no code no bibi,下面通過代碼給大家講解一下如何在Nodejs中簡單的使用Mongo秉馏。首先先定義模型

var mongoose = require('mongoose');
var schema = mongoose.schema;
var userSchema = new schema({ 
   username:{type:String, unique:true}, 
   password:String, 
   email:String,  
   color:String,  
   hased_password:String
}); 

然后綁定和建立數(shù)據(jù)庫的過程,下面的代碼用到了express-sessioncontect-mongo來建立持久性連接脱羡,即用戶可以通過cookie的方式來訪問網(wǎng)頁萝究。

需要說明一個contect session簡單的講就是瀏覽器訪問服務器的過程免都。有時候,我們需要session的聲明周期要長一點帆竹,比如好多網(wǎng)站有個免密碼兩周內自動登錄的功能绕娘。基于這個需求,session必須尋找內存之外的存儲載體栽连,數(shù)據(jù)庫能提供完美的解決方案险领。 mongodb數(shù)據(jù)庫,作為一個NoSQL數(shù)據(jù)庫秒紧,它的基礎數(shù)據(jù)對象時database-collection-document 對象模型非常直觀并易于理解绢陌, 針對node.js 也提供了豐富的驅動和API。 express框架提供了針對mongodb的中間件:connect-mongo熔恢,只需在掛載session的時候在options中傳入mongodb的參數(shù)即可脐湾,程序運行的時候,express app 會自動的替我們管理session的存儲,更新和刪除叙淌。 這樣不同的瀏覽器和ip訪問的時候就可以保存cookie了秤掌。

代碼如下

var expressSession = require('express-session');
var mongoStore = require('connect-mongo')({session: expressSession});
var mongoose = require('mongoose');
var conn = mongoose.connect('mongodb://localhost/myapp');
app.use(expressSession({
      secret: 'SECRET',
      cookie: {maxAge: 60*60*1000},
      store: new mongoStore({
      db: mongoose.connection.db,
      collection: 'sessions'
    })
  }));

解釋一下上面的代碼吧:

  1. expressSession對應一次訪問連接,
  2. mongoStore將訪問的記錄存下來凿菩。
  3. 然后建立連接机杜。
  4. 使用中間件,每次訪問都存到數(shù)據(jù)庫中去

假總結

最近在看JavaScript全棧的書籍衅谷,今天看到了點mongo椒拗,就簡單的總結了一下mongo的使用,隨著自己做的項目規(guī)模的提升获黔,后續(xù)會詳細的介紹mongoDB,NodeJS,當然還有ReactJS和AngularJS的東西蚀苛。

學習資料

mongoose的基本使用可以參考如下地址

Mongoose學習參考文檔——基礎篇

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市玷氏,隨后出現(xiàn)的幾起案子堵未,更是在濱河造成了極大的恐慌,老刑警劉巖盏触,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渗蟹,死亡現(xiàn)場離奇詭異,居然都是意外死亡赞辩,警方通過查閱死者的電腦和手機雌芽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來辨嗽,“玉大人世落,你說我怎么就攤上這事≡阈瑁” “怎么了屉佳?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵谷朝,是天一觀的道長。 經常有香客問我武花,道長圆凰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任髓堪,我火速辦了婚禮送朱,結果婚禮上,老公的妹妹穿的比我還像新娘干旁。我一直安慰自己驶沼,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布争群。 她就那樣靜靜地躺著回怜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪换薄。 梳的紋絲不亂的頭發(fā)上玉雾,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音轻要,去河邊找鬼复旬。 笑死,一個胖子當著我的面吹牛冲泥,可吹牛的內容都是我干的驹碍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼凡恍,長吁一口氣:“原來是場噩夢啊……” “哼志秃!你這毒婦竟也來了?” 一聲冷哼從身側響起嚼酝,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浮还,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后闽巩,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體钧舌,經...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年涎跨,在試婚紗的時候發(fā)現(xiàn)自己被綠了延刘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡六敬,死狀恐怖,靈堂內的尸體忽然破棺而出驾荣,到底是詐尸還是另有隱情外构,我是刑警寧澤普泡,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布,位于F島的核電站审编,受9級特大地震影響撼班,放射性物質發(fā)生泄漏。R本人自食惡果不足惜垒酬,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一砰嘁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧勘究,春花似錦矮湘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至景描,卻和暖如春十办,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背超棺。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工向族, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人棠绘。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓件相,卻偏偏與公主長得像,于是被迫代替她去往敵國和親弄唧。 傳聞我的和親對象是個殘疾皇子适肠,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內容

  • 1.安裝mongodb后,進入bin2.mongod --dbpath=D:\mongodb\db3.打開另一個c...
    lmem閱讀 411評論 0 1
  • MongoDB是一個C++編寫的基于分布式文件存儲的數(shù)據(jù)庫候引,是一個介于關系和非關系之間的數(shù)據(jù)庫侯养,當然也屬于NoSQ...
    Anwar_ec28閱讀 4,766評論 0 0
  • NoSql數(shù)據(jù)庫優(yōu)缺點 在優(yōu)勢方面主要體現(xiàn)在下面幾點: 簡單的擴展 快速的讀寫 低廉的成本 靈活的數(shù)據(jù)模型 在不足...
    dreamer_lk閱讀 2,735評論 0 6
  • 成功啟動MongoDB后,再打開一個命令行窗口輸入mongo澄干,就可以進行數(shù)據(jù)庫的一些操作逛揩。 輸入help可以看到基...
    極課編程閱讀 546評論 0 7
  • 負載均衡及高可用一直是我們線上服務架構所關注的重點,本文內容麸俘,將介紹如何在 Docker 環(huán)境下實現(xiàn) Mo...
    魏文弟閱讀 2,062評論 0 51