Mongoose简介
是一个将JavaScript对象与数据库发生关联的一个框架,Object related model。操纵对象,就是操纵数据库了。对象发生了,同时也耐久化(数据进入数据库)了。
开端运用Mongoose
衔接数据库
var mongoose = require('mongoose');
//建立数据库衔接
var db = mongoose.createConnection('mongodb://localhost:27017/zf');
//监听open事宜
db.once('open',function ( callback ) {
console.log('数据库胜利衔接');
});
module.exports = db;
定义模子
制造schema -> 定义在schema上的scatic要领 -> 制造模子
new mongoose.schema({}); //参数是json,定义字段。
建立模子 db.model(collectionsName,schemaName);
var mongoose = require('mongoose');
var db = require('./db.js');
//建立一个schema组织。 schema--形式
var StudentSchema = new mongoose.Schema({
name: {type: String, default: '匿名用户'},
age: { type: Number },
sex: { type: String }
});
// 建立要领
StudentSchema.statics.zhaoren = function ( name,callback ) {
this.model('Student').find({'name': name},callback);
}
//建立修正要领
StudentSchema.statics.xiugai = function ( conditions,update,options,callback ) {
this.model('Student').update(conditions,update,options,callback);
}
var studentModel = db.model('Student',StudentSchema);
module.exports = studentModel;
app.js 中只操纵类,不操纵数据库。
var Cat = mongoose.model('Cat'{'name': String, age: Number});
Cat.find({'name': 'tom'},function( err.reslut ){
var xiaomao = reslut[0];
//小猫这个变量是一个Cat的实例,它是从Cat鸠合中find出来的,所以find出来今后,就是Cat的一个实例。 //不只建立的是猫的实例, find查询出来的也是猫的实例。
xiaomao.age = 10;
xiaomao.save();
})
Schema
定义文档组织支撑的范例
String
Number
Date
Buffer
Boolean
Mixed
ObjectId
Array
定义对象(methods)要领
实例出来的对象,运用的要领, 实例来挪用。
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mlln');
var db = mongoose.connection;
db.on('open',function ( callback ) {
console.log('数据库胜利翻开');
});
var animalSchema = new mongoose.Schema({
'name': String,
'type': String
});
animalSchema.methods.zhaotonglei = function ( cb ) {
this.model('Animal').find({'type': this.type},cb);
}
var Animal = mongoose.model('Animal',animalSchema);
//module.exports = Blog;
/*Animal.create({'name': '汤姆','type': '猫'});
Animal.create({'name': 'imim','type': '猫'});
Animal.create({'name': '小白','type': '狗'});
Animal.create({'name': '加菲猫','type': '猫'});
Animal.create({'name': 'snoopy','type': '狗'});
*/
//blog.save();
Animal.findOne({'name': 'imim'},function ( err,reslut ) {
var dog = reslut;
dog.zhaotonglei(function ( err,resluts ) {
console.log( resluts );
});
});
model文档操纵
组织函数
组织函数, 参数1:鸠合称号, 参数2:Schema实例
db.model(“test1”, TestSchema );
查询
查询, 参数1疏忽,或为空对象则返回一切鸠合文档
model.find({}, callback);
model.find({},field,callback);
//过滤查询,参数2: {‘name’:1, ‘age’:0} 查询文档的返回效果包括name , 不包括age.(_id默许是1)
model.find({},null,{limit:20});
//过滤查询,参数3: 游标操纵 limit限定返回效果数目为20个,如不足20个则返回一切.
model.findOne({}, callback);
//查询找到的第一个文档
model.findById(‘obj._id’, callback);
//查询找到的第一个文档,同上. 然则只接收 __id 的值查询
建立
建立, 在鸠合中建立一个文档
Model.create(文档数据, callback))
更新
更新,参数1: 查询前提, 参数2: 更新对象,能够运用MondoDB的更新修正器
Model.update(conditions, update, function(error)
删除
删除, 参数1: 查询前提
Model.remove(conditions,callback);