MongoDB的實(shí)用性著實(shí)令人著迷。MongoDB并不去迎合所有人的全部需求。它在功能和復(fù)雜性之間取得很好的平衡,并且將原先十分復(fù)雜的任務(wù)大大簡(jiǎn)化。也就是說(shuō),它具備支撐今天主流web應(yīng)用的關(guān)鍵功能:索引,復(fù)制,分片,豐富的查詢(xún)語(yǔ)法,特別靈活的數(shù)據(jù)模型。與此同時(shí)還不犧牲速度。
秉持MongoDB一樣的風(fēng)格,本書(shū)簡(jiǎn)潔明快。MongoDB新手先看第一章簡(jiǎn)介,馬上就能上手。有經(jīng)驗(yàn)的用戶(hù)會(huì)得益于本書(shū)的廣度和權(quán)威性。對(duì)于客戶(hù)端API和高級(jí)的管理話(huà)題,如復(fù)制,備份和分片,本書(shū)都是權(quán)威參考手冊(cè)。
因?yàn)槲易罱呀?jīng)開(kāi)始在日常工作中使用MongoDB了,所以我相信本書(shū)會(huì)成為從安裝到生產(chǎn)部署分片和復(fù)制集群整個(gè)MongoDB之旅的好伙伴。任何想仔細(xì)研究使用MongoDB的人都會(huì)需要這本重要的參考書(shū)。
目錄
第1 章 簡(jiǎn)介 1
1.1 豐富的數(shù)據(jù)模型 1
1.2 容易擴(kuò)展 1
1.3 豐富的功能 2
1.4 不犧牲速度 3
1.5 簡(jiǎn)便的管理 3
1.6 其他內(nèi)容 3
第2 章 入門(mén) 5
2.1 文檔 5
2.2 集合 6
2.2.1 無(wú)模式 6
2.2.2 命名 7
2.3 數(shù)據(jù)庫(kù) 8
2.4 啟動(dòng)MongoDB 9
2.5 MongoDB Shell 10
2.5.1 運(yùn)行shell 10
2.5.2 MongoDB 客戶(hù)端 11
2.5.3 shell 中的基本操作 11
2.5.4 使用shell 的竅門(mén) 13
2.6 數(shù)據(jù)類(lèi)型 15
2.6.1 基本數(shù)據(jù)類(lèi)型 15
2.6.2 數(shù)字 17
2.6.3 日期 18
2.6.4 數(shù)組 19
2.6.5 內(nèi)嵌文檔 19
2.6.6 _id 和ObjectId 20
第3 章 創(chuàng)建、更新及刪除文檔 23
3.1 插入并保存文檔 23
3.1.1 批量插入 23
3.1.2 插入:原理和作用 24
3.2 刪除文檔 24
3.3 更新文檔 25
3.3.1 文檔替換 26
3.3.2 使用修改器 27
3.3.3 Upsert 36
3.3.4 更新多個(gè)文檔 38
3.3.5 返回已更新的文檔 38
3.4 瞬間完成 41
3.4.1 安全操作 41
3.4.2 捕獲“常規(guī)”錯(cuò)誤 42
3.5 請(qǐng)求和連接 43
第4 章 查詢(xún) 45
4.1 find 簡(jiǎn)介 45
4.1.1 指定返回的鍵 46
4.1.2 限制 46
4.2 查詢(xún)條件 47
4.2.1 查詢(xún)條件 47
4.2.2 OR 查詢(xún) 47
4.2.3 $not 48
4.2.4 條件句的規(guī)則 49
4.3 特定于類(lèi)型的查詢(xún) 49
4.3.1 null 49
4.3.2 正則表達(dá)式 50
4.3.3 查詢(xún)數(shù)組 51
4.3.4 查詢(xún)內(nèi)嵌文檔 53
4.4 $where 查詢(xún) 55
4.5 游標(biāo) 56
4.5.2 避免使用skip 略過(guò)大量結(jié)果 58
4.5.3 高級(jí)查詢(xún)選項(xiàng) 60
4.5.4 獲取一致結(jié)果 61
4.6 游標(biāo)內(nèi)幕 63
第5 章 索引 65
5.1 索引簡(jiǎn)介 65
5.1.1 擴(kuò)展索引 67
5.1.2 索引內(nèi)嵌文檔中的鍵 68
5.1.3 為排序創(chuàng)建索引 68
5.1.4 索引名稱(chēng) 69
5.2 唯一索引 69
5.2.1 消除重復(fù) 69
5.2.2 復(fù)合唯一索引 70
5.3 使用explain 和hint 70
5.4 索引管理 75
5.5 地理空間索引 76
5.5.1 復(fù)合地理空間索引 78
5.5.2 地球不是二維平面 78
第6 章 聚合 79
6.1 count 79
6.2 distinct 79
6.3 group 80
6.3.1 使用完成器 82
6.3.2 將函數(shù)做為鍵使用 84
6.4 MapReduce 84
6.4.1 例1:找出集合中的所有鍵 85
6.4.2 例2: 網(wǎng)頁(yè)分類(lèi) 87
6.4.3 MongoDB 和MapReduce 87
第7 章 進(jìn)階指南 91
7.1 數(shù)據(jù)庫(kù)命令 91
7.1.1 命令的工作原理 92
7.1.2 命令參考 92
7.2 固定集合 95
7.2.1 屬性及用法 96
7.2.2 創(chuàng)建固定集合 96
7.2.3 自然排序 97
7.2.4 尾部游標(biāo) 98
7.3 GridFS:儲(chǔ)存文件 99
7.3.1 開(kāi)始使用GridFS:mongofiles 99
7.3.2 通過(guò)MongoDB 驅(qū)動(dòng)程序操作GridFS 100
7.3.3 內(nèi)部原理 100
7.4 服務(wù)器端腳本 101
7.4.1 db.eval 101
7.4.2 存儲(chǔ)JavaScript 腳本 102
7.4.3 安全性 103
7.5 數(shù)據(jù)庫(kù)引用 104
7.5.1 什么是DBRef 104
7.5.2 示例模式 104
7.5.3 驅(qū)動(dòng)對(duì)DBRef 的支持 105
7.5.4 什么時(shí)候該使用DBRef 呢 106
第8 章 管理 107
8.1 啟動(dòng)和停止MongoDB 107
8.1.1 從命令行啟動(dòng) 107
8.1.2 配置文件 109
8.1.3 停止MongoDB 110
8.2 監(jiān)控 110
8.2.1 使用管理接口 110
8.2.2 serverStatus 112
8.2.3 mongostat 113
8.2.4 第三方插件 113
8.3 安全和認(rèn)證 114
8.3.1 認(rèn)證的基礎(chǔ)知識(shí) 114
8.3.2 認(rèn)證的工作原理 115
8.3.3 其他安全考慮 116
8.4 備份和修復(fù) 116
8.4.1 數(shù)據(jù)文件備份 117
8.4.2 mongodump 和mongorestore 117
8.4.3 fsync 和鎖 118
8.4.4 從屬備份 119
8.4.5 修復(fù) 119
第9 章 復(fù)制 121
9.1 主從復(fù)制 121
9.1.1 選項(xiàng) 122
9.1.2 添加刪除源 123
9.2 副本集 124
9.2.1 初始化副本集 125
9.2.2 副本集中的節(jié)點(diǎn) 127
9.2.3 故障切換和主節(jié)點(diǎn)選舉 128
9.3 在從服務(wù)器上執(zhí)行操作 129
9.3.1 讀擴(kuò)展 130
9.3.2 用從節(jié)點(diǎn)做數(shù)據(jù)處理 130
9.4 工作原理 130
9.4.1 oplog 131
9.4.2 同步 131
9.4.3 復(fù)制狀態(tài)和本地?cái)?shù)據(jù)庫(kù) 132
9.4.4 阻塞復(fù)制 132
9.5 管理 133
9.5.1 診斷 133
9.5.2 變更oplog 的大小 134
9.5.3 認(rèn)證復(fù)制 134
第10 章 分片 135
10.1 分片簡(jiǎn)介 135
10.2 MongoDB 中的分片 135
10.3 片鍵 137
10.3.1 將已有的集合分片 137
10.3.2 遞增片鍵還是隨機(jī)片鍵 137
10.3.3 片鍵對(duì)操作的影響 138
10.4 建立分片 139
10.4.1 啟動(dòng)服務(wù)器 139
10.4.2 切分?jǐn)?shù)據(jù) 140
10.5 生產(chǎn)配置 140
10.5.1 健壯的配置 141
10.5.2 多個(gè)mongos 141
10.5.3 健壯的片 141
10.5.4 物理服務(wù)器 142
10.6 管理分片 142
10.6.1 配置集合 142
10.6.2 分片命令 143
第11 章 應(yīng)用舉例 145
11.1 化學(xué)品搜索引擎:Java 145
11.2 新聞聚合器:PHP 149
11.3 自定義提交表單:Ruby 154
11.4 實(shí)時(shí)分析: Python 157
附錄A 安裝MongoDB 163
附錄B mongo:MongoDB shell 167
附錄C 深入MongoDB 內(nèi)部 169