在使用node.js的时候,经常会搭配mongoDB一起使用。通常,我们不会编写原生的mongo语法。一个经常使用的mongo库是mongoose。由于我记性不好,用过就忘记了。下面就把常用的增删改查API记录下来。安装mongoDB安装文档:mongoDB安装我在mac平台上使用brew来安装更新brew(官网上有写,其实不用,直接跳到第二步,默认会帮你更新)brewupdatebrewinstallmongodb这里其实是安装了启动输入表示启动服务mongod--config/usr/local/etc/mongod.conf一个新窗口启动mongo但是每次都是这样启动也很麻烦。我们配置一下,创建一个数据目录sudomkdir-p/data/db进入安装目录cd/usr/local/Cellar/mongodb/<这里是你安装的版本号对应的文件夹>/binrunmongodbmongod添加环境变量exportPATH=<安装路径>/bin:$PATH把<安装路径>换成你的,比如我的/usr/local/Cellar/mongodb/<这里是你安装时版本号对应的文件夹>,在其实也一样上面的路径对应的是输入的mongod。另开一个窗口,进入mongo可视化工具官网robomongo。我个人使用robomongo。当然,也有很多优秀的客户。根据个人喜好选择快速启动mongoose官网。其实大部分都在官网上写的很详细,有需要的可以参考。useconstmongoose=require('mongoose')//可以用来监控数据库状态constdb=mongoose.connection//连接数据库测试表,不存在也没关系mongoose.connect('mongodb://localhost/test',{useMongoClient:true});//用于解决警告mongoose.Promise=global.Promise;解释:{useMongoClient:true}用于解决以下警告(点头e:2772)DeprecationWarning:open()在mongoose>=4.11.0中被弃用,请改用openUri(),或者如果使用connect()或createConnection()则设置useMongoClient选项。见http://mongoosejs.com/docs/co...创建Schema,见SchemaconstSchema=mongoose.Schema;//定义表模型的数据类型//requiredmustreceiveabooleanorfunctionconstblogSchema=newSchema({title:{type:String,required:true},author:String,age:{type:Number,min:18,max:65},comments:[{body:String,date:Date}],date:{type:Date,default:Date.now},//defaultdefault当前时间戳hidden:Boolean,meta:{votes:Number,favs:Number}});支持的类型StringNumberDateBufferBooleanMixedObjectIdArray创建modelvarBlog=mongoose.model('Blog',blogSchema);注意:在文档中,声明使用该方法时不要使用箭头函数创建文档。通过以上步骤,表格模型实际上已经创建完成。创建文档并将其保存到数据库非常简单。增删改查查询方式一:varTank=mongoose.model('Tank',yourSchema);varsmall=newTank({size:'small'});小的。save(function(err,doc){if(err)returnhandleError(err);console.log(doc)})create:Model.create(doc(s),[callback])Tank.create({size:'small'},function(err,small){if(err)returnhandleError(err);console.log(small._doc)})Model.insertMany(doc(s),[options],[options.ordered,[options.rawResult,[callback])这个方法比循环创建更快,因为它只发送一个操作变量到服务器arr=[{name:'StarWars'},{name:'TheEmpireStrikesBack'}];Movies.insertMany(arr,function(error,docs){});RemoveTank.remove({size:'large'},function(err){if(err)returnhandleError(err);});删除Tank表中大小较大的数据并更改(更新)update:Model.update(conditions,doc,[options],[callback])parameterconditions
