一 . 预备操作

1.安装
    npm i mongoose  
    输入mongod --version测试是否安装成功
    2.开启与关闭数据库
    # mongodb 默认使用执行mongod 命令所处盘符根目录下的/data/db作为自己的数据存储目录
    # 所以在第一次执行该命令之前先自己手动新建一个 /data/db
    开启:mongod
    关闭:Ctrl+C
    3.连接数据库
    mongo
    退出:exit
    4.基本命令
    1)show dbs
       查看数据库列表(数据库中的所有数据库)
    2)db
       查看当前连接的数据库
    3)use 数据库名称
       切换到指定的数据库,(如果没有会新建)
    4)show collections
      查看当前目录下的所有数据表
    5)db.表名.find()
      查看表中的详细信息

二 . MongoDB操作
1.设计Scheme 发布Model (创建表)

//引包
    var mongoose = require('mongoose');
    //拿到schema图表
    var Schema = mongoose.Schema;
    
    //1.连接数据库
    //指定连接的数据库不需要存在,当你插入第一条数据后就会被自动创建出来
    mongoose.connect('mongodb://localhost/newbox')
    
    //2.设计文档结构
    //字段名称就是表结构中的属性名称
    //约束的目的是为了保证数据的完整性,不要有脏数据
    var userSchema = new Schema({
        username: {
            type: String,
            required: true
        },
        password: {
            type: String,
            required: true
        },
        email: {
            type: String
        }
    });
    
    //3.将文档结构发布为模型
    //mongoose.model方法就是用来将一个架构发布为 model
    // 		第一个参数:传入一个大写名词单数字符串用来表示你的数据库的名称
    // 					mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
    // 					例如 这里会变成users集合名称
    // 		第二个参数:架构
    // 	返回值:模型构造函数
    var User = mongoose.model('User', userSchema)
    
   
    //4.当我们有了模型构造函数之后,就可以使用这个构造函数对 users集合进行增删改查

2.增加数据

//增加数据
    var admin = new User({
        username: 'admin',
        password: '123',
        email: 'admin@362266'
    })
    
    admin.save(function (err, ret) {
        if (err) {
            console.log('保存失败');
        } else {
            console.log('保存成功');
            console.log(ret);
    
        }
    })

3.查询

//查询所有
    User.find(function(err,ret){
    	if(err){
    		console.log('查询失败');
    	}else{
    		console.log(ret);
    	}
    });
    
    //条件查询所有
    User.find({ username:'xiaoxiao' },function(err,ret){
    	if(err){
    		console.log('查询失败');
    	}else{
    		console.log(ret);
    	}
    });
    
    //条件查询单个
    // 按照条件查询单个,查询出来的数据是一个对象({})
    // 没有条件查询使用findOne方法,查询的是表中的第一条数据
    User.findOne({
    	username: 'xiaoxiao'
    }, function(err, ret) {
    	if (err) {
    		console.log('查询失败');
    	} else {
    		console.log(ret);
    	}
    });

4.删除

User.remove({
    	username: 'xiaoxiao'
    }, function(err, ret) {
    	if (err) {
    		console.log('删除失败');
    	} else {
    		console.log('删除成功');
    		console.log(ret);
    	}
    });
    
    根据条件删除一个:
    Model.findOneAndRemove(conditions,[options],[callback]);
    根据id删除一个:
    User.findByIdAndRemove(id,[options],[callback]);

5.更改

更新所有:
    User.remove(conditions,doc,[options],[callback]);
    根据指定条件更新一个:
    User.FindOneAndUpdate([conditions],[update],[options],[callback]);
    
    根据id更新一个:
    User.findByIdAndUpdate('5e6c5264fada77438c45dfcd', {
    	username: 'junjun'
    }, function(err, ret) {
    	if (err) {
    		console.log('更新失败');
    	} else {
    		console.log('更新成功');
    	}
    });