mongodb基础

数据库概述及环境搭建

在一个数据软件中可以包含多个数据仓库,在每个数据仓库中可以包含多个数据集合,每个数据集合可以包含多条文档(具体的数据)

datebase

数据库,mongodb数据软件中可以建立多个数据库

collection

集合,一组数据的集合,可以理解为javascript数组

document

文档,可以理解为javascript中的对象

field

字段文档中属性的名称,可以理解为javascript中的对象属性

node连接mongodb

首先确保是否已经启动mongdb

在命令工具中运行这个命令,即可启动mongodb,否则mongodb将无法连接

net start mongoDB

关闭mongodb

net stop mongodb

const MongoClient = require('mongoose');

MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})

mongodb增删查改操作

创建集合插入数据

const MongoClient = require('mongoose');

//数据库连接
MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})


//设置集合(表)规则(设置表里的字段)
const  courseSchema =  new MongoClient.Schema({
    name:String,
    author:String,
    isPublished:Boolean

})

const Course =  MongoClient.model('Course',courseSchema)  //Courses 首字母大写创建自动加s   -----返回构造对象


//默认不插入数据数据库,和集合不创建

//插入数据

// Course.create({name:'javascript',author:'yj',isPublished:false},(err,result)=>{
//     console.log(err);
//     console.log(result);
// })


Course.create({name:'vue',author:'yj',isPublished:false}).then(result=>{
    console.log(result);
}).catch(err=>{
    console.log(err);
})


查询

const MongoClient = require('mongoose');

//数据库连接
MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})


//设置集合(表)规则(设置表里的字段)
const  courseSchema =  new MongoClient.Schema({
    name:String,
    author:String,
    age:Number,
    isPublished:Boolean

})

const Course =  MongoClient.model('Course',courseSchema)  //Courses 首字母大写创建自动加s   -----返回构造对象



// Course.create({name:'react',author:'yj',age:18,isPublished:false})



// Course.find().then(res=>{
//     console.log(res);
// }).catch(err=>{
//     console.log(err);
// })

// Course.find({_id:'5fe072f747590814d48c15f7'}).then(res=>{
//     console.log(res);
// }).catch(err=>{
//     console.log(err);
// })


//默认为第一条
// Course.findOne({name:'yj'}).then(res=>{
//     console.log(res);
// }).catch(err=>{
//     console.log(err);
// })


//  $gt 大于   小于 $lt

// Course.find({age:{$gt:15,$lt20}}).then(res=>{
//     console.log(res);
// }).catch(err=>{
//     console.log(err);
// })

//包含 $in
// Course.find({author:{$in:['杨']}}).then(res=>{
//     console.log(res);
// })


//指定查询  //默认连带_id  //若不想查询加-
// Course.find().select('author name -_id').then(res=>{
//     console.log(res);
// })

//根据内容升序排列
// Course.find().sort('age').then(res=>{
//     console.log(res);
// })

//降序排列
// Course.find().sort('-age').then(res=>{
//     console.log(res);
// })

// skip 跳过几个  limit限制查询几个
Course.find().skip(2).limit(1).then(res=>{
    console.log(res);
})

删除

const MongoClient = require('mongoose');

//数据库连接
MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})


//设置集合(表)规则(设置表里的字段)
const  courseSchema =  new MongoClient.Schema({
    name:String,
    author:String,
    age:Number,
    isPublished:Boolean

})

const Course =  MongoClient.model('Course',courseSchema)  //Courses 首字母大写创建自动加s   -----返回构造对象

//删除单个
// Course.findOneAndDelete({_id:'5fe077a194eadf2f6c1c48ff'}).then(res=>{
//     console.log(res);
// })

//删除多条数据
// Course.deleteMany({}).then(res=>{
//     console.log(res);
// })

更新

const MongoClient = require('mongoose');

//数据库连接
MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})


//设置集合(表)规则(设置表里的字段)
const  courseSchema =  new MongoClient.Schema({
    name:String,
    author:String,
    age:Number,
    isPublished:Boolean

})

const Course =  MongoClient.model('Course',courseSchema)  //Courses 首字母大写创建自动加s   -----返回构造对象


//更新一条数据,两个参数(1.查询条件,2.修改内容)
// Course.updateOne({_id:'5fe1670fcd0d2e365c47cfde'},{name:'mongodb'}).then(res=>{
//     console.log(res);
// })


//更新多条数据
// Course.updateMany({},{age:18}).then(res=>{
//     console.log(res);
// })

验证规则

const MongoClient = require('mongoose');

//数据库连接
MongoClient.connect('mongodb://localhost/playground',{useUnifiedTopology: true,useNewUrlParser: true})
.then(()=>{
    console.log("数据库连接成功");
}).catch(err=>{
    console.log(err,"数据库连接失败");
})


//设置集合(表)规则(设置表里的字段)
const  postSchema =  new MongoClient.Schema({
    title:{
        type:String,
        required:[true,"请传入文章标题"],  //必填
        minlength:[2,'文章长度不能小于2'], //最小长度
        maxlength:[5,'文章长度不能大于5'], //最大长度
        trim:true                         //去除空格
    },
    age:{
        type:Number,
        min:18,    //数字最小范围
        max:80,    //数字最大范围
    },
    publishDate:{
        type:Date,
        default:Date.now  //默认值
    },
    categroy:{
        type:String,
        enum:{
            values:['html','css','js','vue','react'],
            message:'分类名称要在一定的范围才可以!'
        }
    },
    author:{
        type:String,
        validate:{
            validator:v=>{
                //返回布尔值
                // true验证成功
                // false验证失败
                return v && v.length>4
            },
            message:'传入的值不符合验证规则'
        }
    }
})

const Post =  MongoClient.model('Post',postSchema) //Courses 首字母大写创建自动加s   -----返回构造对象


Post.create({title:'大侠',age:19,categroy:'java',author:'bd'}).then(res=>{
    console.log(res);
}).catch(err=>{
    // console.log(err.errors);
    for(var attr in err.errors){
        console.log(err.errors[attr]['message'])
    }
})

集合关联(联表查询)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聒噪,

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值