mongodb讀書(shū)筆記

一、NoSQL

NoSQL(NoSQL = Not Only SQL )甘桑,意即"不僅僅是SQL"绘证。

NoSQL,指的是非關(guān)系型的數(shù)據(jù)庫(kù)奠宜。NoSQL有時(shí)也稱(chēng)作Not Only SQL的縮寫(xiě)包颁,是對(duì)不同于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)管理系統(tǒng)的統(tǒng)稱(chēng)。

CAP定理(CAP theorem)

在計(jì)算機(jī)科學(xué)中, CAP定理(CAP theorem), 又被稱(chēng)作 布魯爾定理(Brewer's theorem), 它指出對(duì)于一個(gè)分布式計(jì)算系統(tǒng)來(lái)說(shuō)压真,不可能同時(shí)滿(mǎn)足以下三點(diǎn):
一致性(Consistency) (所有節(jié)點(diǎn)在同一時(shí)間具有相同的數(shù)據(jù))
可用性(Availability) (保證每個(gè)請(qǐng)求不管成功或者失敗都有響應(yīng))
分隔容忍(Partition tolerance) (系統(tǒng)中任意信息的丟失或失敗不會(huì)影響系統(tǒng)的繼續(xù)運(yùn)作)

NoSQL 數(shù)據(jù)庫(kù)分類(lèi)

列存儲(chǔ)娩嚼、文檔存儲(chǔ)、key-value存儲(chǔ)滴肿、圖存儲(chǔ)岳悟、對(duì)象存儲(chǔ)、xml數(shù)據(jù)庫(kù)泼差。

二贵少、MongoDB

2.1 簡(jiǎn)介

MongoDB 是由C++語(yǔ)言編寫(xiě)的,是一個(gè)基于分布式文件存儲(chǔ)的開(kāi)源數(shù)據(jù)庫(kù)系統(tǒng)堆缘,將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔滔灶,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對(duì)組成,MongoDB 文檔類(lèi)似于 JSON 對(duì)象吼肥。

集合就是 MongoDB 文檔組录平,類(lèi)似于RDBMS中的表格。

2.2 常用命令

進(jìn)入mongo shell控制臺(tái)缀皱,可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作

01. show dbs  ==>  顯示所有數(shù)據(jù)的列表
02. db  ==>  顯示當(dāng)前數(shù)據(jù)庫(kù)對(duì)象或集合
03. use *  ==>  創(chuàng)建或連接到一個(gè)指定的數(shù)據(jù)庫(kù)
04. db.dropDatabase()  ==>  刪除當(dāng)前數(shù)據(jù)庫(kù)
05. show tables  ==>  顯示集合
06. db.collection.drop()  ==>  刪除集合
07. db.collection.insert({})  ==>  向集合插入文檔數(shù)據(jù)斗这,insertOne,insertMany
08. db.collection.update({}, {})  ==>  更新集合中文檔數(shù)據(jù)
09. db.collection.save({})  ==>  插入(指定_id時(shí))或更新集合文檔數(shù)據(jù)
10. db.collection.remove({}, Boolean)  ==>  刪除集合中文檔數(shù)據(jù)
11. db.collection.find(query, projection)  ==>  查詢(xún)集合中文檔數(shù)據(jù)啤斗,pretty()顯示方式涝影,{<key>:{$ne:<value>}}、{<key>:{$lt:<value>}}争占、{<key>:{$lte:<value>}}燃逻、{<key>:{$gt:<value>}}、{<key>:{$gte:<value>}}臂痕; $or: []伯襟; $type類(lèi)型判斷;
12. db.collection.find({},{}).limit(x).skip(y)  ==>  限制和跳過(guò)
13. db.collection.find().sort({})  ==> 排序握童,1為升序排列姆怪,而-1是用于降序排列
14. db.collection.ensureIndex({}, {})  ==>  建立索引
10. db.collection.aggregate([{$group***}])  ==>  聚合,$sum、$avg、$min稽揭、$max俺附、$push、$addToSet 溪掀、$first事镣、$last;$project揪胃、$match璃哟、$limit、$skip喊递、$unwind随闪、$group、$sort骚勘、$geoNear铐伴;
10. db.collection.remove({}, Boolean)  ==>  刪除集合中文檔數(shù)據(jù)
10. db.collection.remove({}, Boolean)  ==>  刪除集合中文檔數(shù)據(jù)
10. db.collection.remove({}, Boolean)  ==>  刪除集合中文檔數(shù)據(jù)
10. db.collection.remove({}, Boolean)  ==>  刪除集合中文檔數(shù)據(jù)
db.collection.find(query, projection)

2.3 MongoDB 數(shù)據(jù)類(lèi)型

String  字符串
Integer 整型數(shù)值
Boolean 布爾值
Double  雙精度浮點(diǎn)值
Min/Max keys    將一個(gè)值與 BSON(二進(jìn)制的 JSON)元素的最低值和最高值相對(duì)比
Arrays  用于將數(shù)組或列表或多個(gè)值存儲(chǔ)為一個(gè)鍵
Timestamp   時(shí)間戳
Object  用于內(nèi)嵌文檔
Null    用于創(chuàng)建空值
Symbol  符號(hào)。該數(shù)據(jù)類(lèi)型基本上等同于字符串類(lèi)型俏讹,但不同的是当宴,它一般用于采用特殊符號(hào)類(lèi)型的語(yǔ)言
Date    日期時(shí)間
Object ID   對(duì)象 ID。用于創(chuàng)建文檔的 ID
Binary Data 二進(jìn)制數(shù)據(jù)
Code    代碼類(lèi)型
Regular expression   正則表達(dá)式類(lèi)型

2.4 復(fù)制藐石、分片即供、備份、恢復(fù)于微、監(jiān)控

1. MongoDB復(fù)制是將數(shù)據(jù)同步在多個(gè)服務(wù)器的過(guò)程逗嫡。
2. 在Mongodb里面存在另一種集群,就是分片技術(shù),可以滿(mǎn)足MongoDB數(shù)據(jù)量大量增長(zhǎng)的需求株依。
3. 在Mongodb中我們使用mongodump命令來(lái)備份MongoDB數(shù)據(jù)驱证。
        mongodump -h dbhost -d dbname -o dbdirectory
4. mongodb使用 mongorestore 命令來(lái)恢復(fù)備份的數(shù)據(jù)。
        mongorestore -h <hostname><:port> -d dbname <path>
5. MongoDB中提供了mongostat 和 mongotop 兩個(gè)命令來(lái)監(jiān)控MongoDB的運(yùn)行情況恋腕。

三抹锄、Nodejs MongoDB

1、安裝
    $ npm install mongodb
2荠藤、創(chuàng)建
    MongoDB 會(huì)自動(dòng)創(chuàng)建數(shù)據(jù)庫(kù)和集合伙单,所以使用前我們不需要手動(dòng)去創(chuàng)建。
3哈肖、鏈接
    MongoClient.connect(DB_CONN_STR, function(err, db) {
        console.log("連接成功吻育!");
    });
4、插入
    db.collection('site').insert([], function(err, result) {});
5淤井、查詢(xún)
    db.collection('site').find({}). toArray(function(err, result) {});
6布疼、更新
    db.collection('site')..update({},{}, function(err, result) {});
7摊趾、插入
    db.collection('site').remove([], function(err, result) {});

三、Nodejs MongoDB Mongoose

mongoose構(gòu)建在mongodb(MongoDB數(shù)據(jù)庫(kù)驅(qū)動(dòng))之上游两,提供了Schema砾层、Model和Document對(duì)象,用起來(lái)更為方便贱案。

3.1 connect

連接數(shù)據(jù)庫(kù)

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/accounts');
var db = mongoose.connection;
db.on('error', function() {});
db.on('open', function() {});
db.on('close', function() {});

3.2 Schema

定義數(shù)據(jù)庫(kù)數(shù)據(jù)結(jié)構(gòu)

var userSchema = new mongoose.Schema({
      name:{type: String, unique: true}, 
      password:String
    }, {collection: "accounts"}  // optional
    );
  //String肛炮、Number、Boolean | Bool轰坊、Array铸董、Buffer祟印、Date肴沫、ObjectId、Mixed

3.3 Model

創(chuàng)建插入數(shù)據(jù)

new User({name:"**", password:"**"}).save(function(err, doc){});  
User.create({name:"**", password:"**"}, function(err, doc){});  

3.4 Model API

create()蕴忆、find()颤芬、findOne()、update()套鹅、remove()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末站蝠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卓鹿,更是在濱河造成了極大的恐慌菱魔,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吟孙,死亡現(xiàn)場(chǎng)離奇詭異澜倦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)杰妓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門(mén)藻治,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人巷挥,你說(shuō)我怎么就攤上這事桩卵。” “怎么了倍宾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵雏节,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我高职,道長(zhǎng)钩乍,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任初厚,我火速辦了婚禮件蚕,結(jié)果婚禮上孙技,老公的妹妹穿的比我還像新娘。我一直安慰自己排作,他們只是感情好牵啦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著妄痪,像睡著了一般哈雏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衫生,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天裳瘪,我揣著相機(jī)與錄音,去河邊找鬼罪针。 笑死彭羹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的泪酱。 我是一名探鬼主播派殷,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼墓阀!你這毒婦竟也來(lái)了毡惜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤斯撮,失蹤者是張志新(化名)和其女友劉穎经伙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體勿锅,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡帕膜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了粱甫。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泳叠。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茶宵,靈堂內(nèi)的尸體忽然破棺而出危纫,到底是詐尸還是另有隱情,我是刑警寧澤乌庶,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布种蝶,位于F島的核電站,受9級(jí)特大地震影響瞒大,放射性物質(zhì)發(fā)生泄漏螃征。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一透敌、第九天 我趴在偏房一處隱蔽的房頂上張望盯滚。 院中可真熱鬧踢械,春花似錦、人聲如沸魄藕。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)背率。三九已至话瞧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間寝姿,已是汗流浹背交排。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留饵筑,地道東北人埃篓。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像翻翩,于是被迫代替她去往敵國(guó)和親都许。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稻薇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

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