關於下載安裝啓動數據庫我這裏就不作過多解釋,谷歌下會有不少教程,啓動成功後的命令窗以下所示:git
這裏咱們用的是Robo 3T,爲何要用可視化工具呢,由於小白對於命令行仍是很陌生的,在命令行中查看數據庫的內容有些不直觀,這個可視化工具的安裝包穀歌一下就闊以找到啦~github
啓動可視化工具mongodb
鏈接數據庫(前提是已經啓動了mongo數據庫)數據庫
新建數據庫mongoosetestnpm
建立成功mongoose
數據庫準備工做完成後,咱們進入代碼環節啦~函數
新建空文件夾,命名爲mongooseTest工具
啓動終端,進入該文件夾ui
在命令行中輸入npm init 初始化項目spa
npm init
這裏有個小問題就是項目不能以駝峯命名,因此npm init後會讓你輸入一個別名,咱們就叫mongoosetest好了,而後一直Enter,項目建立成功。
下載依賴包 mongoose
npm i mongoose -s
完成項目建立,項目結構:
在根目錄下建立db.js,輸入如下代碼,監聽connection的幾個事件,若是以上操做都沒錯的話,那麼就會監聽第一個事件「connect」事件,表示鏈接數據庫成功,在最後,咱們導出mongoose對象,以供其餘模塊使用。
/** * Created by vince on 2017/7/10. * db.js */ var mongoose = require('mongoose'); //設置mongo存儲路徑 var DB_URL = 'mongodb://localhost:27017/mongoosetest'; //鏈接數據庫 mongoose.connect(DB_URL); //鏈接成功後輸出語句 mongoose.connection.on('connected',function () { console.log('Mongoose connect ' + DB_URL + " success"); }); //鏈接異常現實錯誤緣由 mongoose.connection.on('error',function (err) { console.log('Mongoose connect Error:' + err); }); //鏈接斷開後輸出語句 mongoose.connection.on('disconnected',function () { console.log('Mongoose connect disconnected'); }); //導出mongoose對象 module.exports = mongoose;
運行db.js,以下圖所示:
第一步鏈接數據庫成功啦~
那麼什麼是Schema呢?schema是mongoose裏會用到的一種數據模式,能夠理解爲咱們傳統數據庫中的表(table)結構的定義,簡單地說,就是一個數據模板,每一個schema會映射到mongodb中的一個collection,它不具有操做數據庫的能力。
那什麼又是Model呢?Model是由Schema發佈生成的模型,具備抽象屬性和行爲的數據庫操做對,Model能夠直接操做Mongo數據庫中的數據。
解釋完了代碼用說話,新建user.js,輸入如下代碼,建立一個user的schema,而且利用Schema發佈一個Model,導出Model:
/** * Created by vince on 2017/7/10. * user.js */ //引入以前咱們建立的mongose對象 var mongoose = require('./db.js'); //建立一個schema對象 var Schema = mongoose.Schema; //建立一個schema實例 var UserSchema = new Schema({ username: {type: String}, userpwd: {type: String}, userage: {type: Number}, logindate: {type: Date} }); //利用UserSchema實例,發佈一個User的model而且導出 module.exports = mongoose.model("User",UserSchema);
那Entity又是什麼呢?Entity是由Model建立的實體,他的操做也會影響數據庫。
新建insert.js,輸入如下代碼:
/** * Created by vince on 2017/7/10. * insert.js */ //引如User的Model var User = require('./user'); //建立一個插入數據到數據庫中的函數 function insert() { //用Model建立一個Entity實體,就是一個User的數據 var user_1 = new User({ username: 'Vince Hua', userpwd: '123456', userage: 20, logindate: new Date() }); //調用user_1的save方法,插入user_1的數據到數據庫中 user_1.save(function (err, res) { if(err){ console.log("Error: " + err); }else{ console.log("Success Res: " + res) } }); } //執行插入操做 insert();
以上代碼中的user_1就是Model建立的Entity實體,它具備不少操做,svae()只是其中一個。
運行insert.js,命令行輸入框獲得一下結果:
咱們再查看數據庫中:
Amazing,咱們成功插入一個數據啦~
Schema : 一種以文件形式存儲的數據庫模型骨架,不具有數據庫的操做能力
Model : 由Schema發佈生成的模型,具備抽象屬性和行爲的數據庫操做對
Entity : 由Model建立的實體,他的操做也會影響數據庫
Schema、Model、Entity的關係是:Schema生成Model,Model創造Entity,Model和Entity均可對數據庫操做形成影響,但Model比Entity更具操做性。
這裏咱們是直接用Model來操做數據庫,新建update.js
/** * Created by vince on 2017/7/10. * update.js */ //引入User的Model var User = require("./user.js"); function update(){ //wherestr是咱們要進行操做的數據 var wherestr = {'username' : 'Vince Hua'}; //update是咱們更新的數據 var updatestr = {'userpwd': 'hhhhhh'}; User.update(wherestr, updatestr, function(err, res){ if (err) { console.log("Error:" + err); } else { console.log("Update Res: " + res); } }) } update();
運行updata.js,操做成功,命令行輸出:
更新成功,查看數據庫:
一樣咱們直接用Model操做數據庫,新建remove.js,輸入如下代碼:
/** * Created by vince on 2017/7/10. * remove.js */ var User = require("./user"); function del() { //須要刪除的數據 var wherestr = {'username' : 'Vince Hua'}; User.remove(wherestr,function (err, res) { if(err){ console.log("Error: " + err) }else{ console.log("Success Remove: " + res); } }) } del();
執行代碼,獲得一下結果:
查看數據庫,顯示數據已經被刪除
查找數據以前,咱們插入一下幾個數據
依舊是使用Model操做數據庫,新建find.js,輸入如下代碼:
/** * Created by vince on 2017/7/10. * find.js */ var User = require('./user'); function findByConditions() { var wherestr = {'username' : 'Mike Guo'}; User.find(wherestr,function (err, res) { if(err){ console.log("Error: " + err); }else{ console.log("Find Res: " + res); } }); } findByConditions();
執行代碼,獲得查詢結果:
這裏介紹的知識簡單的mongoose的增刪改查操做,只是方便咱們第一次接觸Mongo入門的小練習的Demo而已,mongoose還有其餘強大的操做這裏沒有一一介紹,但願小夥伴們能夠查看中文文檔瞭解更多,若是你看了這篇文章以爲本身已經入門啦,那麼恭喜你~
全部代碼已經上傳到GitHub,傳送門: Demo代碼
nice to meet you ~ ,給個小star鼓勵下?