第Ⅰ部分 MongoDB基礎
第1章 MongoDB簡介 3
1.1 瞭解MongoDB哲學 3
1.1.1 使用正確的工具處理正確的工作 3
1.1.2 天生缺少對事務的支持 5
1.1.3 JSON和MongoDB 5
1.1.4 采用非關係的方式 7
1.1.5 選擇性能還是特性 8
1.1.6 在任何地方均可運行數據庫 8
1.2 將所有組閤在一起 9
1.2.1 生成或創建鍵 9
1.2.2 使用鍵和值 9
1.2.3 實現集閤 10
1.2.4 瞭解數據庫 10
1.3 瞭解特性列錶 10
1.3.1 使用麵嚮文檔存儲(BSON) 11
1.3.2 支持動態查詢 11
1.3.3 為文檔創建索引 12
1.3.4 使用地理空間索引 13
1.3.5 分析查詢 13
1.3.6 就地更新信息 13
1.3.7 存儲二進製數據 14
1.3.8 復製數據 14
1.3.9 實施分片 14
1.3.10 使用映射和歸約函數 15
1.3.11 全新的聚閤框架 15
1.4 獲取幫助 15
1.4.1 訪問網站 15
1.4.2 與MongoDB開發者溝通 16
1.4.3 剪切和粘貼MongoDB代碼 16
1.4.4 在Google小組中尋找解決方案 16
1.4.5 利用JIRA跟蹤係統 16
1.5 小結 16
第2章 安裝MongoDB 17
2.1 選擇版本 17
2.2 在係統中安裝MongoDB 18
2.2.1 在Linux中安裝MongoDB 18
2.2.2 在Windows中安裝MongoDB 19
2.3 運行MongoDB 20
2.3.1 先決條件 20
2.3.2 研究安裝目錄布局 20
2.3.3 使用MongoDB shell 21
2.4 添加額外的驅動 22
2.4.1 安裝PHP驅動 22
2.4.2 確認PHP安裝正確 25
2.4.3 安裝Python驅動 26
2.4.4 確認PyMongo安裝正確 28
2.5 小結 29
第3章 數據模型 31
3.1 設計數據庫 31
3.1.1 集閤的更多細節 32
3.1.2 使用文檔 33
3.1.3 在文檔中內嵌或引用信息 34
3.1.4 創建_id字段 35
3.2 構建索引 36
3.3 使用地理空間索引 37
3.4 在真實世界中使用MongoDB 42
3.5 小結 42
第4章 使用數據 43
4.1 瀏覽數據庫 43
4.2 在集閤中插入數據 44
4.3 查詢數據 45
4.3.1 使用點號 47
4.3.2 使用函數sort、limit和skip 47
4.3.3 使用固定集閤、自然順序和
$natural 48
4.3.4 獲取單個文檔 50
4.3.5 使用聚集命令 50
4.3.6 使用條件操作符 52
4.3.7 使用正則錶達式 59
4.4 更新數據 59
4.4.1 使用update()更新 60
4.4.2 使用save()命令實現upsert 60
4.4.3 自動更新信息 60
4.4.4 指定匹配數組的位置 64
4.4.5 原子操作 65
4.4.6 以原子的方式修改和返迴文檔 66
4.5 重命名集閤 67
4.6 刪除數據 67
4.7 引用數據庫 68
4.7.1 手動引用數據 68
4.7.2 使用DBRef引用數據 70
4.8 使用索引相關的函數 71
4.8.1 學習索引相關的命令 72
4.8.2 強製使用某個索引查詢數據 72
4.8.3 限製查詢匹配 73
4.9 小結 74
第5章 GridFS 75
5.1 背景 75
5.2 使用GridFS 76
5.3 開始使用命令行工具 76
5.3.1 使用_id鍵 77
5.3.2 使用文件名 77
5.3.3 決定文件長度 78
5.3.4 使用塊大小 78
5.3.5 處理上傳日期 79
5.3.6 生成文件的哈希值 79
5.4 查看MongoDB中的數據 79
5.4.1 使用搜索命令 81
5.4.2 刪除 81
5.4.3 從MongoDB中獲取文件 82
5.4.4 mongofiles命令小結 82
5.5 使用Python 82
5.5.1 連接數據庫 83
5.5.2 訪問單詞 83
5.6 在MongoDB中添加文件 84
5.7 從GridFS中讀取文件 84
5.8 刪除文件 85
5.9 小結 85
第Ⅱ部分 在開發中使用MongoDB
第6章 PHP和MongoDB 89
6.1 比較MongoDB和PHP中的
文檔 89
6.2 MongoDB類 90
6.3 連接和斷開連接 91
6.4 插入數據 92
6.5 查詢數據 94
6.5.1 返迴單個文檔 94
6.5.2 列齣所有文檔 95
6.5.3 使用查詢操作符 96
6.5.4 查詢特定信息 96
6.5.5 排序、限製和忽略數據項 97
6.5.6 統計匹配結果的數目 98
6.5.7 使用聚集框架對數組分組 98
6.5.8 使用hint()函數指定索引 99
6.5.9 使用條件操作符重新定義查詢 100
6.5.10 正則錶達式 106
6.6 使用PHP修改數據 106
6.6.1 使用update()函數更新數據 106
6.6.2 節省更新操作的時間 108
6.6.3 使用$ince增加特定鍵的值 108
6.6.4 使用$set修改鍵值 109
6.6.5 使用$unset刪除字段 109
6.6.6 使用$rename重命名字段 110
6.6.7 在更新/插入期間使用$setOnInsert
修改鍵值 110
6.6.8 使用$push嚮指定字段中添加值 111
6.6.9 使用$push和$each嚮某個鍵中
添加多個值 111
6.6.10 使用$addToSet將數據添加到
數組中 112
6.6.11 使用$pop從數組中刪除元素 113
6.6.12 使用$pull刪除所有指定值 113
6.6.13 同時刪除多個元素 113
6.6.14 使用save()函數更新/插入數據 114
6.6.15 以原子的方式修改文檔 115
6.7 刪除數據 116
6.8 DBRef 118
6.9 GridFS和PHP驅動 120
6.9.1 存儲文件 120
6.9.2 在已存儲的文件中添加元數據 121
6.9.3 獲取文件 121
6.9.4 刪除數據 122
6.10 小結 122
第7章 Python和MongoDB 123
7.1 在Python中使用文檔 123
7.2 使用PyMongo模塊 124
7.3 連接和斷開 124
7.4 插入數據 125
7.5 搜索數據 126
7.5.1 搜索單個文檔 126
7.5.2 搜索多個文檔 127
7.5.3 使用點操作符 128
7.5.4 返迴字段 128
7.5.5 使用sort()、limit()和skip()簡化
查詢 129
7.5.6 聚集查詢 130
7.5.7 使用hint()指定索引 132
7.5.8 使用條件操作符重定義查詢 133
7.5.9 使用正則錶達式執行搜索 137
7.6 修改數據 138
7.6.1 更新數據 139
7.6.2 修改操作符 140
7.6.3 使用save()函數快速保存文檔 144
7.6.4 以原子的方式修改文檔 145
7.6.5 使用參數 145
7.7 刪除數據 146
7.8 在兩個文檔之間創建鏈接 146
7.9 小結 149
第8章 高級查詢 151
8.1 文本搜索 151
8.1.1 文本搜索的代價和限製 152
8.1.2 啓用文本索引 152
8.1.3 使用文本索引 153
8.1.4 其他語言中的文本索引 158
8.1.5 文本索引的復閤索引 159
8.2 聚集框架 161
8.2.1 $group 162
8.2.2 $sum 162
8.2.3 $limit 163
8.2.4 $match 164
8.2.5 $sort 165
8.2.6 $unwind 166
8.2.7 $project 167
8.2.8 $skip 168
8.3 MapReduce 170
8.3.1 MapReduce的工作方式 170
8.3.2 創建測試文檔 170
8.3.3 使用map函數 170
8.3.4 高級MapReduce 173
8.3.5 調試MapReduce 174
8.4 小結 175
第Ⅲ部分 使用MongoDB處理大數據
第9章 數據庫管理 179
9.1 使用管理工具 179
9.1.1 mongo——MongoDB控製颱 180
9.1.2 使用第三方管理工具 180
9.2 備份MongoDB服務器 180
9.2.1 創建第一個備份 180
9.2.2 備份單個數據庫 182
9.2.3 備份單個集閤 182
9.3 深入學習備份 183
9.4 恢復單個數據庫或集閤 184
9.4.1 恢復單個數據庫 185
9.4.2 恢復單個集閤 185
9.5 自動化備份 185
9.5.1 使用本地數據存儲 185
9.5.2 使用遠端數據存儲(基於雲) 187
9.6 備份大數據庫 188
9.6.1 使用隱藏的輔助服務器備份
數據 189
9.6.2 使用日誌文件係統創建快照 189
9.6.3 使用捲管理器時的磁盤布局 191
9.7 將數據導入MongoDB 191
9.8 從MongoDB導齣數據 192
9.9 通過限製對MongoDB服務器的
訪問保護數據安全 194
9.10 使用認證保護服務器 194
9.10.1 添加admin用戶 195
9.10.2 啓用認證 195
9.10.3 在mongo控製颱中執行認證 195
9.10.4 MongoDB用戶角色 196
9.10.5 代理憑證 197
9.10.6 修改用戶憑證 197
9.10.7 添加隻讀用戶 198
9.10.8 刪除用戶 198
9.10.9 在PHP應用中認證連接 198
9.11 管理服務器 199
9.11.1 啓動服務器 199
9.11.2 重新配置服務器 200
9.11.3 獲得服務器版本 201
9.11.4 獲得服務器狀態 201
9.11.5 關閉服務器 203
9.12 使用MongoDB日誌文件 203
9.13 驗證和修復數據 204
9.13.1 修復服務器 204
9.13.2 驗證單個集閤 206
9.13.3 修復集閤驗證錯誤 207
9.14 升級MongoDB 209
9.15 MongoDB的滾動升級 209
9.16 監控MongoDB 209
9.17 使用MongoDB管理服務 211
9.18 小結 211
第10章 優化 213
10.1 優化服務器硬件 213
10.1.1 瞭解MongoDB使用內存的
方式 213
10.1.2 瞭解工作集大小 214
10.1.3 選擇正確的數據庫服務器
硬件 214
10.2 評估查詢性能 214
10.2.1 MongoDB分析器 215
10.2.2 使用explain()分析特定的
查詢 217
10.2.3 使用分析器和explain()優化
查詢 218
10.3 管理索引 222
10.3.1 顯示索引 222
10.3.2 創建簡單的索引 223
10.3.3 創建復閤索引 223
10.4 指定索引選項 224
10.4.1 使用{background: true}在後颱
創建索引 224
10.4.2 使用{unique: true}創建唯一鍵
索引 225
10.4.3 使用{dropdups: true}自動去重 225
10.4.4 使用{sparse: true}創建稀疏
索引 226
10.4.5 TTL索引 226
10.4.6 文本索引 227
10.4.7 刪除索引 227
10.4.8 重建集閤索引 227
10.5 MongoDB選擇索引的方式 228
10.6 使用hint()強製使用特定的
索引 229
10.7 優化小對象的存儲 229
10.8 小結 230
第11章 復製 231
11.1 MongoDB復製的目標 231
11.1.1 改善可擴展性 231
11.1.2 改善持久性/可靠性 232
11.1.3 提供隔離性 232
11.2 復製基礎 232
11.2.1 主服務器的定義 233
11.2.2 輔助服務器的定義 233
11.2.3 仲裁服務器的定義 234
11.3 深入學習oplog 234
11.4 實現復製集 235
11.4.1 創建復製集 236
11.4.2 啓動服務器成員 237
11.4.3 嚮復製集中添加服務器 238
11.4.4 添加仲裁服務器 241
11.4.5 復製集鏈 242
11.4.6 管理復製集 242
11.4.7 為復製集成員設置選項 246
11.4.8 從應用連接到復製集 248
11.5 小結 251
第12章 分片 253
12.1 瞭解分片的需求 253
12.2 對數據進行水平和垂直分區 254
12.2.1 對數據進行垂直分區 254
12.2.2 對數據進行水平分區 254
12.3 分析一個簡單的分片場景 255
12.4 使用MongoDB實現分片 256
12.4.1 創建分片設置 258
12.4.2 在集群中添加新的分片 260
12.4.3 從集群中移除分片服務器 262
12.4.4 確定連接的方式 263
12.4.5 列齣分片服務器的狀態 263
12.4.6 使用復製集實現分片 264
12.5 均衡器 264
12.6 哈希片鍵 266
12.7 標簽分片 267
12.8 小結 269
· · · · · · (
收起)