Mongoose学习(1)
1、Schema
: 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力
Model
: 由Schema
发布生成的模型,具有抽象属性和行为的数据库操作对
Entity
: 由Model
创建的实体,他的操作也会影响数据库
2、Schema
、Model
、Entity
的关系请牢记,Schema
生成Model
,Model
创造Entity
,Model
和Entity
都可对数据库操作造成影响,但Model
比Entity
更具操作性。
3、下面我们来一段代码理解一下
var UserSchema = new mongoose.Schema({ username:String, //定义一个属性name,类型为String password: String }); var UserModel = db.model('user',UserSchema); var userEntity = new UserModel({name:'lsg'});
4、创建数据库连接
var mongoose = require('mongoose'); //引用mongoose模块 var db = mongoose.createConnection('127.0.0.1','test'); //创建一个数据库连接
5、打开数据库
db.on('error',console.error.bind(console,'连接错误:')); db.once('open',function(){ //一次打开记录 });
6、接下来我就完成一个CRUD(create, read, update, delete )的例子
7、数据更新,这里我们有很多方法,接下来我介绍一种是常用的
UserModel.findById(id,function(err,user){ user.username = 'lsg'; user.password = '123456'; user.save(function(err, data){}); });
8、查询,分为直接查询和链式查询
UserModel.findOne({'username':'lsg'},'some select',function(err,user){ //如果err==null,则user就能取到数据 //some select 要返回的字段 如 username password });
链式的我直接上官方列子http://mongoosejs.com/docs/2.7.x/docs/finding-documents.html
Model .where('age').gte(25) .where('tags').in(['movie', 'music', 'art']) .select('name', 'age', 'tags') .skip(20) .limit(10) .asc('age') .slaveOk() .hint({ age: 1, name: 1 }) .exec(callback);
9、数据新增,同样只介绍一种
var user = new UserModel({username:'lsg', password: '123456'}); user.save(callback);
10、删除
UserModel.remove({ username: 'lsg' }, function (err, r) { if (err) return callback && callback(err); return callback && callback(null); })