/**
* Created by lbc on 2016/11/16.
*/
var mongoose=require("mongoose");
var db=mongoose.connect('mongodb://localhost/test'); //连接数据库
var Schema=mongoose.Schema; //创建模型
db.connection.on("error",function(error){
console.log("数据库连接失败:"+error)
});
db.connection.on("open", function () {
console.log("------数据库连接成功!------");
});
var userSchema=new Schema({
name:String,
password:String
}); //定义了一个新的模型,但是此模型还未和users集合有关联
//扩展静态方法 extend
userSchema.static('findByName',function(name,callback){
return this.fund({name:name},callback);
});
var userModel=db.model('users',userSchema);
/***************************************************************************************/
//保存-entity
var saveOp=function(collection){
collection.save(function(error,doc){
if(error){
console.log("error:"+error);
}else{
console.log(doc); // obj { __v: 0, name: 'lgb', password: 'abc123', _id: 5832bcdf78b9e9227cb0319e }
}
});
};
//新增-model
var insertOp=function(collection,model){
collection.create(model,function(error,doc){
if(error){
console.log("error:"+error);
}else{
console.log(doc); // obj { __v: 0, name: 'lgb', password: 'abc123', _id: 5832bcdf78b9e9227cb0319e }
}
});
};
//更新-model
var updateOp=function(conllection,fiter,update){
conllection.update(fiter,update,function(error,doc){
if(error){
console.log("error:"+error);
}else{
console.log(doc); // { ok: 1, nModified: 1, n: 1 }
}
});
};
//删除-model
var removeOp=function(conllection,fiter){
conllection.remove(fiter,function(error,docs){
if(error){
console.log('error:'+error);
}else{
console.log(docs); //{ result: { ok: 1, n: 1 }
}
});
};
//查询-model
var findOp=function(collection,filter,fields,options){
collection.find(filter,fields,options,function(error,docs){
if(error){
console.log("error:"+error);
}else{
console.log(docs); // []
}
});
};
//查询单条-model
var findOneOp=function(collection,filter,fields){
collection.findOne(filter,fields,function(error,docs){
if(error){
console.log("error:"+error);
}else{
console.log(docs); //obj
}
});
};
//查询单条-model-By _id
var findByIdOp=function(collection,_id,fields){
collection.findById(_id,fields,function(error,docs){
if(error){
console.log("error:"+error);
}else{
console.log(docs); //obj
}
});
};
/***************************************************************************************/
//saveOp(new userModel({name:'lbc123',password:'123'}));
//insertOp(userModel,{name:'lgb',password:'abc123',sex:true})
//findOp(userModel,{},null,{limit:50});
//updateOp(userModel,{name:'lbc123'},{$set:{password:'abc123'}});
//removeOp(userModel,{_id:'582d5eefc6fa58205c0a7161'});
//findOneOp(userModel,{name:'lbc123'},{name:1});
//findByIdOp(userModel,'5832a0f5b84f0a1fd0ef5770');
exports.user=userModel; //与users集合关联 映射 ORM
//filter 条件语法
/*1. $gt(>),$lt(<),$lte(<=),$gte(>=)操作符:针对Number类型的查询具体超强的排除性。
2. $ne(!=)操作符:相当于不等于、不包含,查询时可根据单个或多个属性进行结果排除。
3. $in操作符:和$ne操作符用法相同,但意义相反。
4. $or操作符:可查询多个条件,只要满足其中一个就可返回结果值。
5. $exists操作符:主要用于判断某些属性是否存在。
游标:
{limit:10} 限制数量
{skip:10} 跳过数量 数量中少于n的话,则不会返回任何结果。
{sort:{age:-1}} 结果排序 1是升序 asc,-1是降序 desc
*/