一、准备工作1、启动mongo数据库关于下载、安装、启动数据库这里不做过多解释。google下会有很多教程。启动成功后的命令窗口如下图所示:2.启用可视化Mongo工具这里我们使用Robo3T,为什么要使用可视化工具呢,因为小白对命令行还是很陌生,不直观在命令行上查看数据库的内容。这个可视化工具的安装包谷歌一下就可以找到。启动可视化工具连接数据库(前提是mongo数据库已经启动)。创建一个新的数据库mongoosetest。数据库准备完成后,我们进入代码链接。二、使用mongoose创建一个简单的数据库操作1、新建一个项目,新建一个空文件夹,命名为mongooseTest,启动终端,进入文件夹在命令行输入npminit初始化项目npminit有一个这里有个小问题就是项目不能以驼峰命名,所以npminit会让你输入一个别名,我们就叫它mongoosetest,然后一直回车,项目就创建成功了。下载依赖包mongoosenpmimongoose-s完成项目创建。项目结构:2、连接数据库并在根目录下创建db.js,输入如下代码,监听连接的几个事件。如果以上操作无误,那么它会监听第一个事件“connect”事件,表示连接数据库成功。最后,我们导出mongoose对象以供其他模块使用。/***文斯于2017年7月10日创建。*db.js*/varmongoose=require('mongoose');//设置mongo存储路径varDB_URL='mongodb://localhost:27017/mongoosetest';//连接数据库mongoose.connect(DB_URL);//连接成功后输出语句mongoose.connection.on('connected',function(){console.log('Mongooseconnect'+DB_URL+"success");});//连接异常及错误原因mongoose.connection.on('error',function(err){console.log('MongooseconnectError:'+err);});//连接断开后的输出语句mongoose.connection.on('disconnected',function(){console.log('Mongooseconnectdisconnected');});//导出mongoose对象module.exports=mongoose;运行db.js,如下图所示:首先第一步连接数据库成功~3.新建一个Schema,发布一个Model那么什么是Schema呢?Schema是mongoose中使用的一种数据模式。可以理解为我们传统数据库中表结构的定义。简单的说,就是一个数据模板。每个模式都将映射到mongodb中的一个集合。它没有操作数据库的能力。那么什么是模型呢?Model是Schema发布生成的模型,具有对数据库操作的抽象属性和行为。Model可以直接操作Mongo数据库中的数据。解释完代码,新建一个user.js,输入以下代码,创建用户schema,使用schema发布Model,导出Model:/***Createdbyvinceon2017/7/10。*user.js*///引入我们之前创建的mongoose对象varmongoose=require('./db.js');//创建schema对象varSchema=mongoose.Schema;//创建schema实例varUserSchema=newSchema({username:{type:String},userpwd:{type:String},usageage:{type:Number},logindate:{type:Date}});//使用UserSchema实例发布一个User模型并导出module.exports=mongoose.model("User",UserSchema);4、Model创建Entity实体,数据库操作的Entity是什么?Entity是Model创建的实体,它的操作也会影响到数据库。新建一个insert.js并输入以下代码:/***由vince创建于2017/7/10。*insert.js*///引入如User的ModelvarUser=require('./user');//创建一个向数据库中插入数据的函数functioninsert(){//使用Model创建一个Entity实体,这是一个用户的数据varuser_1=newUser({username:'VinceHua',userpwd:'123456',usage:20,logindate:newDate()});//调用user_1的save方法,将user_1的数据插入数据库user_1.save(function(err,res){if(err){console.log("Error:"+err);}else{console.log("SuccessRes:"+res)}});}//执行插入操作insert();上面代码中的user_1是Model创建的Entity实体,它有很多操作,svae()只是其中之一。运行insert.js,在命令行输入框中得到如下结果:我们再查看一下数据库:太神奇了,我们成功插入了一条数据~5.总结一下Schema、Model、Entity的关系Schema:一个数据库模型骨架以文件的形式存储,不具备操作数据库的能力操作也会影响数据库。Schema、Model、Entity的关系是:Schema生成Model,Model创建Entity,Model和Entity都可以影响数据库的操作,但是Model比Entity更具可操作性。3.其他一些mongoose“sao操作”更新数据库这里我们直接使用Model操作数据库,新建一个update.js/***vince于2017/7/10创建。*update.js*///引入用户模型varUser=require("./user.js");functionupdate(){//wherestr是我们要操作的数据varwherestr={'username':'VinceHua'};//update是我们的更新varupdatestr={'userpwd':'hhhhhh'};User.update(wherestr,updatestr,function(err,res){if(err){console.log("Error:"+err);}else{console.log("UpdateRes:"+res);}})}更新();运行updata.js,运行成功,命令行输出:更新成功,查看数据库:删除数据。同样,我们直接使用Model操作数据库,新建一个remove.js,输入如下代码:/***Createdbyvinceon2017/7/10。*remove.js*/varUser=require("./user");functiondel(){//需要删除的数据varwherestr={'username':'VinceHua'};User.remove(wherestr,function(err,res){if(err){console.log("Error:"+err)}else{console.log("成功删除:"+res);}})}del();执行代码得到如下结果:查看数据库,显示数据已被删除在查找数据之前,先插入几条数据,仍然使用Model操作数据库,新建一个find.js,输入如下代码:/***Createdbyvinceon2017/7/10。*find.js*/varUser=require('./user');functionfindByConditions(){varwherestr={'username':'MikeGuo'};User.find(wherestr,function(err,res){if(err){console.log("Error:"+err);}else{console.log("FindRes:"+res);}});}findByConditions();执行代码,得到查询结果:4.总结这里介绍的知识简单的mongoose的增删改查操作,只是第一次上手Mongo小练习的demo。mongoose还有其他强大的操作这里就不一一介绍了。我希望你可以查看中文文档以了解更多信息。如果你看到这篇文章,觉得自己已经开始了,那么恭喜~所有代码都已经上传到GitHub了,传送门:Demo代码很高兴认识你~,给个小star鼓励一下好吗?
