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晚安思密达。