关于下载安装启动数据库我这里就不作过多解释,谷歌下会有不少教程,启动成功后的命令窗以下所示: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鼓励下?