mongoose學(xué)習(xí)筆記1之迅速開(kāi)始

學(xué)習(xí)mongoose之前柳琢,需要先安裝好牍帚,mongodb和node.js

mongodb簡(jiǎn)介(引自菜鳥(niǎo)教程

MongoDB 是由C++語(yǔ)言編寫(xiě)的晶衷,是一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)嗽元。
在高負(fù)載的情況下,添加更多的節(jié)點(diǎn)掠兄,可以保證服務(wù)器性能像云。
MongoDB 旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔蚂夕,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成迅诬。MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔婿牍,數(shù)組及文檔數(shù)組侈贷。


安裝mongodb。我選擇使用brew安裝(我用的是mac)

如果你未安裝brew,請(qǐng)?jiān)诮K端使用如下命令:

curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar xvz -C/usr/local --strip 1

當(dāng)brew安裝完成后等脂,你需要先更新一下

brew update 

更新過(guò)程可能很漫長(zhǎng)铐维,啥動(dòng)靜都沒(méi)有,請(qǐng)耐心等待慎菲。

更新完之后,你就可以安裝mongodb了锨并。在終端的命令如下:

brew install mongodb

安裝完成后露该,會(huì)提示你啟動(dòng)Mongodb的方法,此時(shí)你在終端輸入如下命令行:

mongod --config /usr/local/etc/mongod.conf

如果此時(shí)沒(méi)反應(yīng)第煮,那么就說(shuō)明你啟動(dòng)成功了解幼。你可以在瀏覽器中輸入http://localhost:27017/,就能看的如下結(jié)果包警。

WechatIMG1055.jpeg

如果終端出現(xiàn) -bash: mongod: command not found

可以用如下代碼解決

export PATH="$PATH:/usr/local/opt/mongodb/bin"

其中$PATH后面代表的是你mongodb安裝的路徑撵摆。如果你是用brew安裝,那就是這個(gè)路徑害晦。

然后進(jìn)入/usr/local/opt/mongodb/bin目錄,執(zhí)行如下命令

./mongo

如果啟動(dòng)時(shí)出現(xiàn)其他錯(cuò)誤特铝,你或許需要使用如下命令暑中,建立mongdb的存儲(chǔ)文件夾

mkdir -p  /data/db

如果還不行,就谷歌吧鲫剿。

如果關(guān)閉mongodb數(shù)據(jù)庫(kù)后鳄逾,重啟不了。那就到/usr/local/opt/mongodb/bin目錄執(zhí)行

./mongod --repair

然后重啟mongod

mongod --config /usr/local/etc/mongod.conf

安裝mongoose可視化工具

我推薦工具Robomongo
下載地址灵莲。然后安裝雕凹。在mac下,系統(tǒng)不會(huì)允許你安裝不受信任的app政冻,請(qǐng)?jiān)谠O(shè)置-安全與隱私中選擇任何來(lái)源枚抵。然后就可以安裝了。
如果你已經(jīng)啟動(dòng)了mongodb明场,那么打開(kāi)使用Robomongo連接localhost:27017汽摹。

WechatIMG1056.jpeg


安裝node.js


點(diǎn)擊安裝教程

準(zhǔn)備工作做好了,接下來(lái)開(kāi)始mongoose之旅榕堰。

快速開(kāi)始mongoose

接下來(lái)使用命令行安裝mongoose (npm使用介紹

npm install mongoose

我喜歡貓竖慧,我想要將我遇到的每一只貓記錄到mongodb中。首先逆屡,需要在我們的項(xiàng)目中包含mongoose,然后連接test-我們運(yùn)行在本地的MongoDB實(shí)例數(shù)據(jù)庫(kù)圾旨。
在項(xiàng)目中創(chuàng)建 getting-started.js。

// getting-started.js    <em>連接數(shù)據(jù)庫(kù)</em>
let mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');

現(xiàn)在我們已經(jīng)嘗試連接了本地的測(cè)試數(shù)據(jù)庫(kù)魏蔗。我們需要在連接數(shù)據(jù)庫(kù)成功或連接失敗的時(shí)候得到通知砍的。

let db = mongoose.connection;
db.on('error',()=>{
    console.error('連接失敗');
});
db.once('open', function () {
    //回調(diào)函數(shù)
 });

一旦我們鏈接成功,我們的回調(diào)函數(shù)將被調(diào)用莺治。為了簡(jiǎn)潔廓鞠,我們假定接下來(lái)的所有代碼都在這個(gè)回調(diào)函數(shù)內(nèi)。

在Mongoose中谣旁,一切都是從Schema(模式)而來(lái)床佳。接下來(lái),我們將定義我們的貓榄审。

let kittySchema = mongoose.Schema({
  name:String
});

到目前還好砌们,我們已經(jīng)得到了一個(gè)模式,帶有一個(gè)屬性name,name是一個(gè)字符串搁进。接下來(lái)浪感,我們將把我們的模式編譯成模型。

let Kitten = mongoose.model('Kitten',kittySchema);

一個(gè)模型是我們構(gòu)造文檔的一個(gè)類(文檔是MongoDB中數(shù)據(jù)的基本單元饼问,非常類似于影兽,關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)中的行)。既然這樣莱革,每個(gè)文檔就是一只貓峻堰,這只貓上帶有我們?cè)谀J街幸呀?jīng)定義好的屬性和行為讹开。接下來(lái),讓我們創(chuàng)建一只貓的文檔茧妒。

 let silence = new Kitten({name:"silence"});

貓會(huì)叫萧吠,那么讓我們看一看如何添加“speak"的功能到我們的文檔。

//注意:方法必須添加在模式被編譯為模型之前桐筏。
kittySchema.methods.speak = function(){
  let greeting = this.name?'Memo name is '+this.name:"I don't have a name";
console.log(greeting);
}
 //添加在下面代碼之前
let Kitten = mongoose.model('Kitten',kittySchema);
//此時(shí)將模式編譯成模型時(shí)纸型,會(huì)把模式功能方法屬性加入到模型的原型中,然后暴露在每個(gè)文檔實(shí)例梅忌,即這里的Kitten實(shí)例狰腌。

加入了speak功能后,我們的貓就會(huì)叫了牧氮。

silence.speak();//控制臺(tái)輸出 Memo name is silence

我們有了會(huì)說(shuō)話的貓琼腔,但是我們還有保存任何東西到數(shù)據(jù)庫(kù)中。每個(gè)文檔都可以使用save方法保存到數(shù)據(jù)庫(kù)中踱葛。無(wú)論發(fā)生什么事情丹莲,save方法的第一個(gè)參數(shù)都是error。

silence.save(function(err,silence){
 if(err){
     return console.log(err);
 }else{
     console.log('保存成功');
 }
});

隨著時(shí)間的流逝尸诽,我們想要看看我們之前存在數(shù)據(jù)庫(kù)中的貓甥材,我們可以通過(guò) Kitten模型讀取所有小貓的文檔。

Kitten.find({name:'silence'},function(err,target){
  if(err){
      console.error(err);
  }else{
      console.log(target);
  }
});

上述代碼的意思是性含,查找一個(gè)名字為‘silence'的貓洲赵。find的回調(diào)函數(shù)的第一個(gè)參數(shù)永遠(yuǎn)是error。target表示我們查找的對(duì)象商蕴。

如果你想找到所有小貓的記錄叠萍,你可以去掉查找條件。

 Kitten.find(function(err,target){
  if(err){
      console.error(err);
  }else{
      console.log(target);
  }
});

你可以用正則查詢

Kitten.find({ name: /^Fluff/ }, callback)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绪商,一起剝皮案震驚了整個(gè)濱河市苛谷,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌格郁,老刑警劉巖抄腔,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異理张,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绵患,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)雾叭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人落蝙,你說(shuō)我怎么就攤上這事织狐≡萦祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵移迫,是天一觀的道長(zhǎng)旺嬉。 經(jīng)常有香客問(wèn)我,道長(zhǎng)厨埋,這世上最難降的妖魔是什么邪媳? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮荡陷,結(jié)果婚禮上噪伊,老公的妹妹穿的比我還像新娘贴铜。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布技扼。 她就那樣靜靜地躺著,像睡著了一般嗽桩。 火紅的嫁衣襯著肌膚如雪幼驶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天耘沼,我揣著相機(jī)與錄音极颓,去河邊找鬼。 笑死耕拷,一個(gè)胖子當(dāng)著我的面吹牛讼昆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骚烧,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼浸赫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了赃绊?” 一聲冷哼從身側(cè)響起既峡,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎碧查,沒(méi)想到半個(gè)月后运敢,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡忠售,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年传惠,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稻扬。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡卦方,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出泰佳,到底是詐尸還是另有隱情盼砍,我是刑警寧澤尘吗,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站浇坐,受9級(jí)特大地震影響睬捶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜近刘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一擒贸、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跌宛,春花似錦酗宋、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哎迄,卻和暖如春回右,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漱挚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工翔烁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旨涝。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓蹬屹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親白华。 傳聞我的和親對(duì)象是個(gè)殘疾皇子慨默,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容