Mongoose實在nodejs異步環境下對MongoDB進行便捷操做的對象模型工具。Mongoose是nodejs的驅動,不能做爲其餘語言的驅動。javascript
mongoose有兩個特色:java
一、經過關係型數據庫的思想來設計非關係型數據庫。node
二、基於MongoDB驅動,簡化操做。mongodb
一、新建mongoose文件夾,文件夾下新建mongoose_demo.js文件數據庫
二、執行npm init -y,生成package.json文件npm
cnpm init -y
三、安裝mongoosejson
cnpm i mongoose --save
目錄結構以下所示:異步
④mongoose_demo.js裏面鍵入:mongoose
const mongoose = require("mongoose"); mongoose.connect("mongodb://127.0.0.1:27017/eggcms"); // 若是有帳戶密碼須要採用下面的鏈接方式: // mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms');
⑤定義 Schema:工具
數據庫中的 Schema,爲數據庫對象的集合。schema 是 mongoose 裏會用到的一種數據模式, 能夠理解爲表結構的定義;每一個 schema 會映射到 mongodb 中的一個 collection,它不具有操做數據庫的能力。
定義一個動漫表的Schema:
⑥定義模型
定義好了Schema,接下就是生成Model。model是由schema生成的模型,能夠對數據庫的操做。
注意:mongoose.model 裏面能夠傳入兩個參數也能夠傳入三個參數
①mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema)
②mongoose.model(參數 1:模型名稱(首字母大寫),參數 2:Schema, 參數 3:數據庫集合名稱)
若是傳入 2 個參數的話:這個模型會和模型名稱相同的複數的數據庫創建鏈接: 通常用第二種傳入 3 個參數的話:模型默認操做第三個參數定義的集合名稱
// 一、引入mongoose const mongoose = require("mongoose"); // 二、鏈接數據庫 mongoose.connect("mongodb://127.0.0.1:27017/eggcms"); // 若是有帳戶密碼須要採用下面的鏈接方式: // mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms'); // 三、操做動漫表(集合) 定義一個Schema 對字段的格式能夠進行一些驗證 Schema裏的對象和數據庫表裏面的字段須要一一對應 var DongManSchema = mongoose.Schema({ name: String, age: Number, status: Number }); // 定義model var DongMan = mongoose.model("DongMan", DongManSchema, dongman);
⑦給dongman表中增長一條數據:鍵入以下代碼,執行 node mongoose_demo.js
// 一、引入mongoose const mongoose = require("mongoose"); // 二、鏈接數據庫 mongoose.connect("mongodb://127.0.0.1:27017/eggcms"); // 若是有帳戶密碼須要採用下面的鏈接方式: // mongoose.connect('mongodb://eggadmin:123456@localhost:27017/eggcms'); // 三、操做動漫表(集合) 定義一個Schema 對字段的格式能夠進行一些驗證 Schema裏的對象和數據庫表裏面的字段須要一一對應 var DongmanSchema = mongoose.Schema({ name: String, age: Number, status: Number }); // 定義model,操做數據庫 var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman"); // 增長數據 // 實例化Model, DongMan Model 建立增長的數據 // 實例.save() var dongman = new DongMan({ name: "犬夜叉", age: 18, status: 0 }); dongman.save(function(err) { if (err) { console.log(err); return; } console.log("成功"); });
能夠看到數據庫可視化工具中多了一條數據。
⑧查詢表中的數據:
// 定義model,操做數據庫 var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman"); // 查詢dongman表中的數據; DongMan.find({}, function(err, doc) { if (err) { console.log(err); return; } console.log(doc); });
⑨修改表中的數據,找到指定Id的數據,將name犬夜叉變爲name火影忍者。
// 定義model,操做數據庫 var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman"); DongMan.updateOne( { _id: "5ea99dd5edd15105512ad7fa" }, { name: "火影忍者" }, function(err, doc) { if (err) { return console.log(err); } console.log("成功"); } );
查看GUI工具,可得數據已更新
⑩刪除數據,刪除指定id數據。
// 定義model,操做數據庫 var DongMan = mongoose.model("Dongman", DongmanSchema, "dongman"); // 刪除數據 DongMan.deleteOne({ _id: "5ea99dd5edd15105512ad7fa" }, (err, res) => { if (err) { return console.log(err); } console.log(res); });
GUI刷新後,發現數據被清空
感受都是些傻瓜式操做,可是仍是要熟悉的。GG晚安思密達。