课程目标掌握mongodb的基本使用了解文档型数据库的设计理念掌握原生模块node-mongodb-nativeapplication掌握ODM模块mongoose应用pupteer爬虫keystornJs资源MongoDB:下载node驱动:documentmongoose:文档可视化工具:Robo3Tmongodb安装、配置下载安装(https://www.runoob.com/mongod...配置环境变量创建dbpath文件夹启动:mongod--dbpath=/data//查询所有数据库showdbs//切换/createdatabases,创建集合(表)时会自动创建当前数据库usetest//获取当前db的所有集合db.getCollectionNames()//查询db.fruits.find()//插入一块datadb.fruits.save({name:'apple',price:5})//条件查询db.fruits.find({price:5})db.fruits.find({price:{$lte:10}})mongodb更多相关操作点击ODM-Mongoose安装:npminstallmongoose-S基本用法:constmongoose=require("mongoose");//1.连接mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser:true});constconn=mongoose.connection;conn.on("error",()=>console.error("连接数据库失败"));conn.once("open",async()=>{//2.定义一个Schema-TableconstSchema=mongoose.Schema({category:String,name:String});//3.编译一个Model,对应数据库中复数和小写的CollectionconstModel=mongoose.model(“Fruit",Schema);try{//4.创建,创建返回一个Promiseletr=awaitModel.create({category:"TemperateFruits",name:"Apple",price:5});console.log("Insertdata:",r);//5.查询,find返回Query,实现了then和catch,可以作为Promise使用//如果需要返回Promise,调用其exec()r=awaitModel.find({name:"Apple"});console.log("Queryresult:",r);//6.更新,updateOne返回Queryr=awaitModel.updateOne({name:"Apple"},{$set:{name:'Mango'}});console.log("Updateresult:",r);//7.删除,deleteOne返回Queryr=awaitModel.deleteOne({name:"Apple"});console.log("Deleteresult:",r);}catch(error){console.log(error);}});Schema字段定义constblogSchema=mongoose.Schema({title:{type:String,required:[true,'Thetitleisrequired']},//定义验证规则author:String,body:String,comments:[{body:String,date:Date}],//定义对象数组date:{type:Date,default:Date.now},//指定默认值hidden:Boolean,meta:{//定义对象votes:Number,favs:Number}});//定义多个索引blogSchema.index({title:1,author:1,date:-1});constBlogModel=mongoose.model(“博客”,博客模式);constblog=newBlogModel({title:"nodejspersistence",author:"jerry",body:"...."});constr=awaitblog.save();console.log("新博客",r);定义实例方法:抽象通用方法以供重用//定义实例方法blogSchema.methods.findByAuthor=function(){returnthis.model('blog').find({author:this.author}).exec();}//获取模型实例constBlogModel=mongoose.model("blog",blogSchema);constblog=newBlogModel({...});//调用实例方法r=awaitblog.findByAuthor();console.log('findByAuthor',r);静态方法blogSchema.statics.findByAuthor=function(author){returnthis.model("blog").find({author}).exec();};r=awaitBlogModel.findByAuthor('jerry')console.log("findByAuthor",r);虚拟属性blogSchema.virtual("commentsCount").get(function(){returnthis.comments.length;});让r=awaitblog.findOne({author:'杰瑞'});console.log("博客评论数:",r.commentsCount);购物车相关接口的实现
