Mongoose API使用

 http://mongoosejs.com/docs/api.html

 

Schemas:可以理解为一个类,这个类是对数据库里面存储的结构的一个映射,除了描述以为你也可以为它定义操作。

1.创建:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var blogSchema = new Schema({
  title:  String,
  author: String,
  body:   String,
  comments: [{ body: String, date: Date }],
  date: { type: Date, default: Date.now },
  hidden: Boolean,
  meta: {
    votes: Number,
    favs:  Number
  }
});

var Blog = mongoose.model('Blog', blogSchema);

 2.非静态方法:

var animalSchema = new Schema({ name: String, type: String });

animalSchema.methods.findSimilarTypes = function (cb) {
  return this.model('Animal').find({ type: this.type }, cb);
}

var Animal = mongoose.model('Animal', animalSchema);
var dog = new Animal({ type: 'dog' });

dog.findSimilarTypes(function (err, dogs) {
  console.log(dogs); // woof
});

 非静态方法的好处很直观,就是通过内部传参的方式,简化调用的时候的输入。

3.静态方法:

PersonSchema.statics.findByName = function(name,cb){
    this.find({name:new RegExp(name,'i'),cb});
  }
  var PersonModel = mongoose.model('Person',PersonSchema);
  PersonModel.findByName('krouky',function(err,persons){
    //找到所有名字叫krouky的人
  });

关键是使用的模式,然后就是什么时候我们需要使用静态方法这种模式,说白了就是默认方法不够用的时候。

4.虚拟属性:

personSchema.virtual('name.full').get(function () {
  return this.name.first + ' ' + this.name.last;
});

 为Schema增加一个新的属性,这个属性是其他属性的合成。

5.Options配置项:

var ExampleSchema = new Schema(config,options);

 这些配置是用来指定操作数据库的规则的。

5.1autoIndex: false

var schema = new Schema({..}, { autoIndex: false });
var Clock = mongoose.model('Clock', schema);
Clock.ensureIndexes(callback);

如果想自己指定索引生成的规则,可以选择不使用自动索引,默认是选择自动索引的

5.2option: bufferCommands

 没搞懂

5.3 capped

new Schema({..}, { capped: 1024 });
new Schema({..}, { capped: { size: 1024, max: 1000, autoIndexId: true } }); 

 限制批量操作的数量

5.4 option: id

var schema = new Schema({ name: String }, { id: false });
var Page = mongoose.model('Page', schema);
var p = new Page({ name: 'mongodb.org' });
console.log(p.id); // undefined

 如果不想要自动生成的id可以直接设置为false。

 

Model:是由mongoose根据Schema加工而成的,你可以把它理解为操作数据库的DAO层,只是这个DAO有很多mongoose默认帮我们添加的方法。

var Tank = mongoose.model('Tank', yourSchema);
var small = new Tank({ size: 'small' });

1.增加:

small.save(function (err) {
  if (err) return handleError(err);
  // saved!
})

Tank.create({ size: 'small' }, function (err, small) {
  if (err) return handleError(err);
  // saved!
})

 这里的create是类的方法,save是对象的方法,他们是等价的。

2.查询:

不写了,http://mongoosejs.com/docs/api.html API文档写的很详细

 

 http://www.w3cschool.cc/mongodb/mongodb-aggregate.html 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值