Mongoose介绍

Mongoose是nodejs的MongoDB Object Modeling Map简称ODM

基于模型

模型是schema类的实例

//创建tankSchema类
var tankSchema = new mongoose.Schema({ name: 'string', size: 'string' });  
//实例化tank模型
var Tank = mongoose.model('Tank', tankSchema);  

schema第二个参数可选项

autoIndex: bool - defaults to null (which means use the connection's autoIndex option) 自动索引即MongoDB ensureIndex command,默认false

bufferCommands: bool - defaults to true 自动重新连接,默认true

capped: bool - defaults to false MongoDB固定集合,默认是False

collection: string - no default 集合的名称,没有默认

emitIndexErrors: bool - defaults to false.

id: bool - defaults to true

_id: bool - defaults to true

minimize: bool - controls document#toObject behavior when called manually - defaults to true

read: string 读取优先级别

safe: bool - defaults to true. MongoDB在操作数据发生错误时,不是马上报告,在安全模式下则相反

shardKey: bool - defaults to null MongoDB是分布式的,设置是否共享到其它主机

strict: bool - defaults to true 确保数据是经过模型才保存到数据库,默认true

toJSON - object - no default toObject - object - no default typeKey - string - defaults to 'type'

validateBeforeSave - bool - defaults to true 是否经过验证才保存

versionKey: string - defaults to "__v"

更多

schema类中的数据类型

  • String
  • Number
  • Boolean | Bool
  • Array
  • Buffer
  • Date
  • ObjectId | Oid
  • Mixed
    ObjectId要通过new mongoose.Types.ObjectId获得

定义嵌套的键

var UserSchema = new Schema({  
  name:'string'
  email: { 
           type: String, 
           set: toLower 
  }
})

在MongoDB中文档可以很大,层次也可以很深

构建索引

schema.index({ first: 1, last: -1 })  

中间件

中间件(也可以叫钩子)是一个函数,他可以控制异步执行函数,中间件在schema类中指定,Mongoose 4.0有两种类型中间件:文档中间件和查询中间件
文档中间件支持追踪文档函数
  • init
  • validate
  • save
  • remove
查询中间件支持跟踪模型和查询函数
  • count
  • find
  • findOne
  • findOneAndRemove
  • findOneAndUpdate
  • update
你的欣赏是我最大的动力

Yanxiong Huang

My name is Yanxiong Huang. graduated from Nanyang middle school.Love Linux,familiar with Node.js,Docker,Serverless... and more Web technology.Contact Me:QQ 31356617;Email:huangaynxiong2013@gmail.com

guangzhou,china http://www.myfreax.com

乐在分享