mangoose使用


mongoose

monogoDB:一个数据库品牌的名字

mingod:启动数据库的命令

monogo:连接数据库的命令

mongoose:在Node平台下,一个知名的用于帮助开发者

写代码连接数据库,借助第三方的一个包

mongoose在node平台下,更加简单,高效,安全,稳定的操作mongoDB


使用方法

引入mongoose

let mongoose = require('mongoose')

1.连接数据库

mongoose.connect('mongodb://localhost:27017/demo',{
    useNewUrlParser:true,  //使用一个新的URL解析器,用于解决一些安全性问题
    useUnifiedTopology:true  //使用一个统一的新的拓扑结构
})

2.绑定数据库连接的监听

mongoose.connection.on('open', function (err) {
    if (err) {
        console.log('数据库链接失败')
    } else {
        console.log('数据库连接成功')
    }
}

3.引入模式对象(请来一个帮你看门的保安)

mongoose.connection.on('open', function (err) {
    if (err) {
        console.log('数据库链接失败')
    } else {
        console.log('数据库连接成功')
        //3.操作数据库
        console.log('操作数据库')
        //1.请来一个帮你看门的保安  ----引入模式对象
        let Schema = mongoose.Schema
    }
}

4.创建约束对象(制定你家的规则)

mongoose.connection.on('open', function (err) {
    if (err) {
        console.log('数据库链接失败')
    } else {
        console.log('数据库连接成功')
        //3.操作数据库
        console.log('操作数据库')

        //1.请来一个帮你看门的保安  ----引入模式对象
        let Schema = mongoose.Schema
        //2.制定你家的规则  ----创建约束对象
        let studentsRule = new Schema({
            stu_id:{
                type:String,//限制学号必须为字符串
                required:true,  //限制学号为必填项
                unique:true //限制学号是唯一的
            },
            name:{
                type:String,//限制姓名必须为字符串
                required:true,  //限制姓名为必填项
            },
            age:{
                type:Number,//限制年龄必须为字符串
                required:true,  //限制年龄为必填项
            },
            sex:{
                type:String,//限制性别必须为字符串
                required:true,  //限制性别为必填项
            },
            hobby:[String],  //限制爱好只能为数组,数组中的每一项必须为字符串
            info:Schema.Types.Mixed,  //接收所有类型
            date:{
                type:Date,
                default:Date.now()
            },
            enable_flag:{
                type:String,
                default:true
            }
        })
}

5.创建模型对象(告诉保安你的规则)

mongoose.connection.on('open', function (err) {
    if (err) {
        console.log('数据库链接失败')
    } else {
        console.log('数据库连接成功')
        //3.操作数据库
        console.log('操作数据库')

        //1.请来一个帮你看门的保安  ----引入模式对象
        let Schema = mongoose.Schema
        //2.制定你家的规则  ----创建约束对象
        let studentsRule = new Schema({
            stu_id:{
                type:String,//限制学号必须为字符串
                required:true,  //限制学号为必填项
                unique:true //限制学号是唯一的
            },
            name:{
                type:String,//限制姓名必须为字符串
                required:true,  //限制姓名为必填项
            },
            age:{
                type:Number,//限制年龄必须为字符串
                required:true,  //限制年龄为必填项
            },
            sex:{
                type:String,//限制性别必须为字符串
                required:true,  //限制性别为必填项
            },
            hobby:[String],  //限制爱好只能为数组,数组中的每一项必须为字符串
            info:Schema.Types.Mixed,  //接收所有类型
            date:{
                type:Date,
                default:Date.now()
            },
            enable_flag:{
                type:String,
                default:true
            }
        })
        //3.告诉保安你的规则 ----创建模型对象
        let stuModel =  mongoose.model('students',studentsRule)   //用于生成某个模型对象
}

6.CRUD(真正有人要进入你家了)

//2.绑定数据库连接的监听
mongoose.connection.on('open', function (err) {
    if (err) {
        console.log('数据库链接失败')
    } else {
        console.log('数据库连接成功')
        //3.操作数据库
        console.log('操作数据库')

        //1.请来一个帮你看门的保安  ----引入模式对象
        let Schema = mongoose.Schema
        //2.制定你家的规则  ----创建约束对象
        let studentsRule = new Schema({
            stu_id:{
                type:String,//限制学号必须为字符串
                required:true,  //限制学号为必填项
                unique:true //限制学号是唯一的
            },
            name:{
                type:String,//限制姓名必须为字符串
                required:true,  //限制姓名为必填项
            },
            age:{
                type:Number,//限制年龄必须为字符串
                required:true,  //限制年龄为必填项
            },
            sex:{
                type:String,//限制性别必须为字符串
                required:true,  //限制性别为必填项
            },
            hobby:[String],  //限制爱好只能为数组,数组中的每一项必须为字符串
            info:Schema.Types.Mixed,  //接收所有类型
            date:{
                type:Date,
                default:Date.now()
            },
            enable_flag:{
                type:String,
                default:true
            }
        })
        //3.告诉保安你的规则 ----创建模型对象
        let stuModel =  mongoose.model('students',studentsRule)   //用于生成某个模型对象
        //4.真正有人要进入你家了  -----CRUD
        stuModel.create({
            stu_id:'004',
            name:'班长',
            age:21,
            sex:'男',
            hobby:['打游戏','学高数','学习'],
            info:'可爱的男子',
        },function(err,data){
            if(!err) console.log(data)
            else console.group(err)
        })
    }
})

CRUD操作

新增操作

对象.create

对象.create({
    stu_id:'004',
    name:'班长',
    age:21,
    sex:'男',
    hobby:['打游戏','学高数','学习'],
    info:'可爱的男子',
},function(err,data){
    if(!err) console.log(data)
    else console.log(err)
})

查询操作

对象.find

find方法:

1.返回的事一个数组,就算是一条数据,也包裹成一个数组

2.若查询结果为空,则返回一个空数组

stuModel.find({name:'蒨'},function(err,data){
    if(!err) console.log(data)
    else console.log(err)
})

对象.findone

1.若有结果,返回的是一个对象

2.若没有结果,返回一个null

stuModel.findone({name:'蒨'},function(err,data){
    if(!err) console.log(data)
    else console.log(err)
})

更新操作

对象.updateOne

对象.updateMany

stuModel.updateOne({name:'谢雨蒨'}{age:22},function(err,data){
if(!err) console.log(data)
else console.log(err)
})

删除操作

对象.deleteMany


文章作者: Daniel Lin
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Daniel Lin !
  目录