Mongoose是一个方便在node.js环境下运行mongodb的对象模型工具。因此,要使用mongoose,必须安装node.js环境和mongodb数据库。mongoose让mongodb操作变得更加简单方便。你可以在github中获取它的源码,也可以在这里查看api文档。它是英文的,内容很多。因此,本文特意总结了mongoose的schema数据模型定义和简单的增删改查api。connectconnect用于创建数据库连接mongoose.connect(uri(s),[options],[callback])//url(s):数据库地址,可以多个,用`,`分隔//options:optional,配置参数//callback:可选,回调mongoose.connect('mongodb://数据库地址(含端口号)/数据库名')指定用户连接mongoose.connect('mongodb://用户名:password@127.0.0.1:27017/数据库名')连接多个数据库如果你的app想连接多个数据库,只需要设置多个url,用.分隔,设置mongos为truemongoose.connect('urlA,urlB,..',{mongos:true})schema&&modelSchema是以文件形式存储的数据库模型骨架,不具备操作数据库的能力。Schema可以理解为mongoose对表结构的定义(不仅可以定义文档的结构和属性,还可以定义文档实例方法、静态模型方法、复合索引等),每个schema都会映射到一个集合中mongodb,Schema不具备操作数据库的能力定义Schema//语法newmongoose.Schema({field...},[options])//Instanceconstmongoose=require('mongoose')constSchema=mongoose.SchemaconstObjectId=架构。Types.ObjectIdconstArticleSchema=newSchema({标题:{类型:String,required:true},contents:String,author:String,category:{type:ObjectId,ref:'Category'//与类别表关联的_id},createTime:{type:Date,default:Date.now}},{connection:'Article',//模型名称,})字段类型schema支持以下字段类型StringNumberDateBufferBooleanMixedObjectIdArrayschema不仅可以设置字段类型,还可以设置默认值(default),关联文档(参考),需要等待。_设置字段类型后,如果出现错误,比如某个字段类型是Boolean,输入其他类型,mongoose会抛出类型错误提示_options//`collection`是常用的,其他的请参考to[documentation](http://www.nodeclass.com/api/mongoose.html#index_Mongoose-Schema){_id:true,//布尔值,唯一索引,如果不需要,可以设置为false关闭集合:'documentname',//在MongDB中,默认使用Model的名字作为集合的名字。如果需要自定义集合的名字,可以设置这个选项对批量操作有效,用于限制数据库操作id的数量,//mongoose为每个schema分配一个虚拟属性id,是一个getter。返回的是_id转换成字符串的值read,safe,shardKey,strict,toJSON,toObject}ModelModel是一个假设的(花哨的)具有抽象属性和行为的构造函数。模型的每个实例都是一个文档。文档可以保存到数据库中,并对数据库进行操作。//语法mongoose.model(`DocumentName`,Schema)//实例module.exports=mongoose.model(`Article`,ArticleSchema)MethodsModel的实例方法是document。save等内置实例方法,可以通过methods属性ArticleSchema.methods.methodFunc=function(){//body...}为实例自定义扩展方法,比如find、update等,可以通过statics属性为Model添加自定义扩展方法ArticleSchema.statics.staticFunc=function(){//body...}Methods和Statsstatics的区别是向模型添加方法,而方法就是向实例(instance)添加方法。方法和静态的区别//上面的代码,//module.exports=mongoose.model(`Article`,ArticleSchema)//将文章的模型保存为文件article.jsconstArticle=require('../models/article')//staticsArticle.staticFunc()//methodsconstarticle=newArticle(arguments)article.methodFunc()findfind用于查询多个文档Model.find(conditions,[fields],[options],[callback])conditions