Mongoose学习(1)

1、Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力

   Model : 由Schema发布生成的模型,具有抽象属性和行为的数据库操作对

   Entity : 由Model创建的实体,他的操作也会影响数据库

2、SchemaModelEntity的关系请牢记,Schema生成ModelModel创造EntityModelEntity都可对数据库操作造成影响,但ModelEntity更具操作性。

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);
    })

 

 
原文地址:https://www.cnblogs.com/shenggen/p/5496331.html