知識點: 1-MongoDB 安裝,啟動和卸載 2-基本概念 3-基本的增刪改查操作(CURD) 來回顧總結一把學習的mongodb,如果有javascript基礎,學習"芒果DB"還是很好理解的,如果會使用mysql,那就更容易了。 mongodb是一個介於nosql資料庫和mysql資料庫之間的 ...
知識點:
1-MongoDB 安裝,啟動和卸載
2-基本概念
3-基本的增刪改查操作(CURD)
來回顧總結一把學習的mongodb,如果有javascript基礎,學習"芒果DB"還是很好理解的,如果會使用mysql,那就更容易了。
mongodb是一個介於nosql資料庫和mysql資料庫之間的一個數據存儲系統。Mongo的特點是他支持的查詢語言非常強大,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
特點:高性能、易部署、易使用,存儲數據非常方便
測試環境: win10系統
一. MongoDB 安裝,啟動和卸載
1) 這裡只做windows中的安裝,比較簡單容易。
Step 1: 到官網下載壓縮文件並解壓 。現在官網下載要註冊比較麻煩,如果想快捷點,可以到mongo網址去下載
我下載的版本: mongodb-win32-x86_64-v3.4-latest.zip x86_64則不用管是32位還是64位
解壓以後: 裡面有一個bin目錄和3個文件。我們需要的就是這個bin目錄。
Step 2: 準備工作,將bin目錄複製到想放置的位置。可以創建一個mongodb目錄,將bin目錄放入。
Step 3: 準備工作 , 創建一個存放數據的目錄如data/ ,再創建一個日誌文件如log.txt. (執行安裝命令時就明白為什麼要創建了)
我是在wamp目錄下創建了mongodb目錄, 和php,mysql在同級目錄下。
我的目錄結構大致: /mongodb/bin/ /mongodb/data/ /mongodb/log.txt
Step 4: 開始安裝,在cmd中運行bin目錄中的mongod.exe
mongod.exe --install --dbpath 數據目錄 --logpath 日誌文件
1 //安裝 下麵db和log.txt就是上面準備工作中創建的 2 mongod.exe --install 3 --dbpath D:/amp/Mongodb/data/db 4 --logpath D:/amp/Mongodb/data/log.txt
註: 可以直接將mongod.exe往cmd視窗拖入,這樣就不用輸入路徑了
Step 5: 啟動mongo. 在“運行”中輸入 “services.msc” 打開服務視窗,找到mongo項,並啟動。(或直接 右鍵》任務管理器》服務》打開服務)
Step 6: 測試安裝是否成功
方式1: 在cmd中直接打開mongo的客戶端(就像mysql黑視窗),將/bin/mongo.exe拖到cmd中,回車運行
方式2: 在瀏覽器中輸入 localhost:27017 會看到一句英語提示
此時mongodb已經安裝完成。
2) 安裝出錯: 無mogoDB服務項
錯誤描述: 按照上述步驟安裝mongodb, 未出現error等錯誤語句,準備啟動mongodb時,在服務中居然沒有mongo該服務項??
原因分析: cmd直接運行的,可能需要管理員運行
最終解決:用管理員身份重新執行安裝一次
二. 基本概念
(1) NoSQL : Not Only SQL ,既非關係型的資料庫
(2) 文檔(document) (就是記錄)
i. 文檔 (document) – 相當於 mysql 中的一條記錄
ii. 格式 ( key / value): {“name”:”php”, “age”:100}
(3) 集合(collection) (數據表)
i. 集合 (collection) – 相當於 mysql 中的一個表
ii. 無須規定任何結構 如{ “name” : “php” }
(4) 每個文檔(每條記錄)都有一個 “_id”屬性,唯標識一個文檔 (相當於mysql中的自增的主鍵)
(5) Mongodb 客戶端: db 該變數代表所當前連接的資料庫
三. 基本的增刪改查操作(CURD)
mongodb的客戶端打開,其也是一個js的編譯器,預設連接的是“test”資料庫
增刪改操作主要用到以下方法:
增操作: insert (添加文檔)
查操作: find (返回所有文檔) findOne (返回一個文檔)
改操作: update (修改文檔)
刪除操作: remove (刪除文檔)
(1)增操作: insert (添加文檔)
1 // 添加記錄 2 //向集合(用戶表)user中添加一條記錄 3 var user={username:"張三",age:18} //js中聲明一個字面量對象一樣 (欄位名如username不加引號是可以的) 4 db.user.insert(user) //添加 5 db.user.find() //查詢結果 6 7 -- 向集合user中添加一條日誌記錄 8 var blog = {"title":"Mongodb學習",content:"一起來玩一把mongodb","addtime":"2018-01"} 9 db.user.insert(blog) 10 db.user.find()
說明: 1-欄位名(對應js中屬性名字) 可以加引號也可以不加引號。不加系統會自動加上
2- 上面的代碼可以直接複製到mongodb客戶端直接運行(上述代碼中"//"在客戶端運行也是註釋符)。註意,複製後點擊右鍵自動粘貼上去
3- 每行語句末尾可以加分號回車,也可以不加直接回車,這個和js是一樣的
4- 執行命令值,也可以不用聲明使用變數,直接將值放到函數中也是一樣的。如db.user.insert({"username":"張三","age":18})
(2)查操作: find (返回所有文檔) findOne (返回一個文檔)
//查詢記錄 db.user.findOne() //查詢出第一條記錄 db.user.find() //查詢出所有的記錄 //查詢出年齡等於18歲所有記錄 var user={"username":"張三","age":18}; //準備添加測試數據 var user1={"username":"李四","age":28}; var user2={"username":"王五","age":38}; var user3={"username":"趙六","age":18}; db.user.insert(user); db.user.insert(user1); db.user.insert(user2); db.user.insert(user3); db.user.find({age:18})//查詢出年齡等於18歲所有記錄 查詢出年齡等於18歲且姓名名是"趙六" 的記錄 db.user.find( { age:18,username:"趙六" } )
註意: 欄位引號可加可不加,但是如果值是字元串有引號,則查詢也必須加上
//下麵2條查詢是不一樣的,如果記錄中是整型的18 則最下麵的一條是查不到記錄的 db.user.find({age:18}) db.user.find({age:"18"})
(3)改操作: 修改記錄 update(where,data) , save()
update方法的第一個參數為“查找的條件”,第二個參數為“更新的值”
//修改張三年齡為80 //方式1 db.user.findOne({username:"張三"}) var u=db.user.findOne({username:"張三"}) u.age=20 db.user.save(u); db.user.findOne({username:"張三"}) //方式2 db.user.update({username:"張三"},{username:"張三",age:18}) //要註意第2個{}值是最終值,如果漏了其他值,則其他未寫的值會全部自動刪除掉了 db.user.findOne({username:"張三"})
(4)刪除操作: remove (刪除文檔)
//--刪除記錄 db.user.remove({}); //刪除所有user集合中的數據 //刪除age=18的記錄 db.user.remove({age:18}) //僅刪除user集合中的age=18的記錄
舊版本的remove中如果不帶參數將刪除所有數據,但此版本(新版)中如果不給參數會報錯,給一個空值,就可以刪除所有記錄。刪除是很危險的操作,且不可撤回,所以刪除一定要謹慎
技巧提示:
1-在mongodb客戶端中可以按: ctrl+l 可以清屏 (這個清空屏幕要知道,清了以後,想看前面的操作結果可就看不到了哦)
2- 輸入: db.help() 會給出一些資料庫級操作的幫助。如果要查看集合級的幫助則輸入:db.集合名.help() 如:db.user.help()
3- 如果想像mysql一樣快速在黑視窗運行,我們可以將mongo執行目錄加入到環境變數中。下次運行則直接敲如: mongo 就可以運行客戶端了
本來準備將php支持的配置也寫下來,可以在網上編輯文檔有點慢。如果能直接導入word就好了。不知道大家是如何快速編輯的。