介绍持久化mongoose之mongodb_第1页
介绍持久化mongoose之mongodb_第2页
介绍持久化mongoose之mongodb_第3页
介绍持久化mongoose之mongodb_第4页
介绍持久化mongoose之mongodb_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MongoDB:下载node驱动:⽂档LAMPLNMPLinuxNginxMysqlPHP)////查询所有数dbshow切换/创建数据库,当创建⼀个集合(table)use得到当前db//查询/mongodb/mongodb-create-http://mongodb.github.io/node-mongodb-native/3.1/quick-start/quick-https:///chen-安装mysqlnpminstallmongodb((async()=>const{MongoClient}=constclient=MongoDB(userNewUrlParser:trueletret=awaitclient.connect()console.log('ret:',ret)constdb=constfruits=ret=fruits.insertOnename'芒果price:console.log('插⼊成功'retretawaitfruits.findOne()console.log('查询⽂档:'//更新的操作符retawaitfruits.updateOnename'芒果$setname'苹果console.log('更新⽂档'retawaitfruits.deleteOne({name'苹果////module.exports=url:"mongodb://localhost:27017",dbName:'test',constconstconf=constEventEmitter=constMongoClient=classMongodbconstructor(conf)//保存confthis.emmiter=newthis.client=newMongoClient(conf.url,{useNewUrlParser:true});this.client.connect(err=>{if(err)throwcol(colName,dbName=conf.dbName)returnonce(event,{this.emmiter.once(event,//2.导出module.exports=new////constEventEmitter=require('events').EventEmitter;constevent=newEventEmitter();event.on('some_event',num=>{console.log('some_event事件触发letnum=0setInterval(()=>{event.emit('some_event',num++},constconstmongodb=require('./models/db')mongodb.once('connect',async()=>{constcol=awaitconstdata=newArray(100).fill().map((v,i)=>return{name:"XXX"+i,price:i,category:Math.random()>?'蔬菜':'⽔果'awaitcol.insertMany(data)前端⻚⾯调⽤<!DOCTYPE<html<metacharset="UTF-8"<metaname="viewport"content="width=device-width,initial-scale=1.0"/><metahttp-equiv="X-UA-Compatible"content="ie=edge"<!--<script</script>--<script<scriptsrc="/element-<script<linkhref="/element-ui/2.13.0/theme-chalk/index.css"rel="stylesheet"><div<el-inputplaceholder="请输⼊内容v-model="search"class="input-with-select"@change="changeHandler"><el-buttonslot="append"icon="el-icon-<el-radio-groupv-model="category"<el-radio-buttonv-for="vincategorys"<el-table:data="fruits"style="width:<el-table-columnprop="name"label="名称"<el-table-columnprop="price"label="价格"<el-table-columnprop="category"label="种类<el-paginationlayout="prev,pager,next"@current-change="currentChange":total="total">varapp=Vue({el:"#app",data:{page:total:0,fruits:[],categorys:category:created()methods:async{this.page=page;awaitthis.getData()h...',val)this.search=valawaitasyncgetData()constres=awaitaxios.get(`/api/list?constdata=res.data.datathis.fruits=data.fruitsthis.total=data.pagination.totalasyncgetCategory()constres=awaitaxios.get(`/api/category`)this.categorys=res.data.dataconsole.log('category',this.categorys)}}constconstexpress=constconstapp=constpath=constmongo=//consttestdata=app.get("/",(req,res)=>{app.get("/api/list",async(req,res)=>const{page}=req.querytry{constcol=consttotal=awaitcol.find().count()constfruits=awaitcol.skip((1)*res.json({ok:1,data:{fruits,pagination:{total,page}}}catch{appapp.get("/api/category",async(req,res)=>{constcol=mongo.col("fruits")constdata=awaitcol.distinct('category')res.json({ok:1,data})app.get("/api/list",async(req,res)=>const{page,category,keyword}=constcondition={}if(category){condition.category=if(keyword)={$regex:newRegExp(keyword)consttotal=awaitconstfruits=await .skip((1)*////⽐较$eq,$gt,$gte,$inawait//逻辑price>10或awaitcol.find({$or:price不⼤于10且price不⼩于awaitcol.find({$nor://元素awaitcol.insertOne({name:"芒果",price:20.0,stack:true})awaitcol.find({stack:{$exists:true}})//模拟awaitcol.find({name:{$regex:/芒awaitcol.createIndex({name:'text'awaitcol.find({$text:{$search:'芒果'//数组col.insertOne({...tags"热带""甜"$allawaitcol.findtags$all:['热带','甜'$elemMatch:col.insertOne({hisPrice:20,25,30col.find({hisPrice:$elemMatch:$gt:24,$lt:26历史价位有//地理空间创建stationsconststations=awaitname:天安⻔东loc:116.40785139.91408]name:天安⻔⻄loc:116.39805639.913723name:王府井loc:116.41780939.91435]awaitstations.createIndex({loc:"2dsphere"});r=awaitstations.find({loc:$nearSphere:$geometry:type:coordinates:[116.403847,$maxDistance:}}console.log("天安⻔附近地铁站await{name:"芒果"{$setprice:19.8,category:'热带⽔果'{$set...,areacity:'三亚'$pushinsertOne({tags:['热带','甜']})//添加tags数组字段fruitsColl.updateManyname"芒果$pushtags'上⽕'}})//$pull,$pullAll⽤于删除符合条件项,$pop删除⾸项-1或尾项1fruitsColl.updateManyname"芒果$poptags1}})fruitsColl.updateManyname:"芒果"$poptags:fruitsColl.updateManyname"芒果"tags"甜$set"tags.$":"⾹甜"}})$pushtags$each"上⽕""真⾹"$slice-3////r=await.aggregate([{$sort:{price:-1}},{$skip:0},{$limit://投射:只选择name,price并排除_idfruitsColl.aggregate([...$project:聚合管道操作符:$add,$avg,$sum按name字段分组,统计组内pricefruitsColl.aggregate([{awaitawaitfruitsColl.find().sort({price:-1}).skip(0).limit(2)概述:优雅的NodeJS对象⽂档模型objectdocumentmodel。Mongoose有两个特点:npminstallmongoose////constmongoose=1.mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser:constconn=conn.on("error"console.error("连接数据库失败"));conn.once("open",async()=>{2.定义⼀个SchemaTableconstSchema=mongoose.Schema({category:String,name:String3.编译⼀个Model它对应数据库中复数、⼩写的constModel=mongoose.model("fruit",Schema);try{4.创建,create返回letrawaitModel.create({category:"温带⽔果",name"苹果price:console.log("插⼊数据:"5.查询,find返回Query,它实现了then和catch,可以当Promise//如果需要返回Promise,调⽤其rawaitModel.findname"苹果console.log("查询结果:"6.更新,updateOne返回rawaitModel.updateOnename"苹果$setname'芒果console.log("更新结果:",r);7.删除,deleteOne返回rawaitModel.deleteOnename"苹果});console.log("删除结果:",r);}catch{constconstblogSchema=titletypeStringrequiredtrue'标题为必填项'author:body:commentsbody:String,date:Date}],定义对象数组date:{type:Date,default:Date.now},//指定默认值hidden:Boolean,meta:votes:Number,favs:NumberblogSchema.index({title:1,author:1,date:-1});constBlogModel=mongoose.model("blog",blogSchema);constblog=newBlogModel({title:"nodejs持久化author:"jerry",body:"..."constrawaitblog.save();console.log("新增blog",r);{useCreateIndex:blogSchema.methods.findByAuthor=function()returnthis.model('blog').find({author:this.authorconstBlogModel=mongoose.model("blog",blogSchema);constblog=newBlogModel({...});r=awaitblogSchemablogSchema.statics.findByAuthor=function(author){returnthis.model("blog").find({authorr=awaitconsole.log("findByAuthor",{returnrawaitBlogModel.findOne({author:'jerry'});console.log("blog留⾔数:",mentsCount);////constmongoose=1.mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser:constconn=conn.on("error"console.error("连接数据库失败constconstmongoose=constschemamongoose.Schema({name:String,password:String,cart:schema.statics.getCart={returnschema.statics.setCart=function(_id,cart)return.findByIdAndUpdate(_id,{$set:{cart}constmodel=mongoose.model("user",{_id:"5c1a2dce951e9160f0d8573b"{name:"jerry",cart:[{pname:"iPhone",price:666,count:1}]{upsert:true},(err,r)=>{console.log(err,module.exports=////constmongoose=1.mongoose.connect("mongodb://localhost:27017/test",{useNewUrlParser:true});constconn=mongoose.connection;conn.on("error"console.error("连接数据库失败////constmongoose=constschema=mongoose.Schema({name:String,password:String,cart:[]schema.statics.getCart=function(_id)returnreturnschema.statics.setCart=function(_id,{return.findByIdAndUpdate(_id,{$set:{cart}constmodel=mongoose.model("user",{_id:"5c1a2dce951e9160f0d8573b"{name:"jerry",cart:[{pname:"iPhone",price:666,count:1}]{upsert:true},(err,r)=>{console.log(err,module.exports=////constexpress=require('express')constapp=newexpress();constbodyParser=require('body-parser');constpath=require('path')constUser

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论