03 数据库

MongoDB数据库下载安装
下载地址 https://www.mongodb.com/download-center/community
Mongoose第三方包
下载 npm install mongoose
启动MongoDB
在命令行工具中 net start mongoDB


数据库连接

mongoose.connect('mongodb://localhost/playground')
.then(() => console.log('数据库连接成功'))
.catch(err => console.log('数据库连接失败',err));

在MongoDB中不需要显式创建数据库,如果正在使用的数据库不存在,MongoDB会自动创建。


创建集合
创建集合分为两步,一是对集合设定规则,二是创建集合,创建mongoose.Schema构造函数的实例即可创建集合。

//设定集合规则
const courseSchema = new mongoose.Schema({
    name:String,
    author:String,
    isPublished:Boolean
});
//创建集合并应用规则
const Course = mongoose.model('Course',courseSchema);//courses

创建文档
创建文档实际上就是向集合中插入数据。
分为两步:
1.创建集合实例
2.调用实例对象下的save方法将数据保存到数据库中。

//创建集合实例
const course = new Course({
    name:'Node.js course',
    author:'讲师',
    tags:['node','backend'],
    isPublished:true
});
//将数据保存到数据库中
course.save();
Course.create({
    name:'JavaScript基础',author:'黑马讲师',isPublish:true
},(err,doc) => {
    //错误对象
    console.log(err)
    //当前插入的文档
    console.log(doc)
})
Course.create({
    name:'JavaScript基础',
    author:'讲师',
    isPublish:true
}).then(doc => console.log(doc))
  .catch(err => console.log(err))

mongoDB数据库导入数据

mongoimport -d 数据库名称 -c 集合名称 -file 要导入的数据文件

找到mongodb数据库的安装目录,将安装目录下的bin目录放置在环境中。


查询文档

//根据条件查找文档(条件为空则查找所有文档)
Course.find().then(result => console.log(result))
//返回文档集合
[{
  _id:1,
  name:'node.js',
  author:'讲师'
},{
  _id:2,
  name:'Javascript',
  author:'讲师'
}]

//根据条件查询文档
Course.findOne({name:'node.js'})
      .then(result => console.log(result))
//返回文档
{
  _id:1,
  name:'node.js',
  author:'讲师'
}

//匹配大于 小于
User.find({age:{$gt:20,$lt:50}})
    .then(result => {console.log(result)})
//匹配包含
User.find({hobbies:{$in:['敲代码']}})
    .then(result => console.log(result))
//选择要查询的字段
User.find().select('name email')
    .then(result => console.log(result))
//将数据按照年龄进行排序
User.find().sort('age')
    .then(result => console.log(result))  
//skip跳过多少条数据 limit限制查询数量
User.find().skip(2).limit(2)
    .then(result => console.log(result))

删除文档

//删除单个
Course.findOneAndDelete({})
    .then(result => console.log(result))
//删除多个
User.deleteMany({})
    .then(result => console.log(result))

更新文档

//更新单个
User.updateOne({查询条件},{要修改的值})
    .then(result => console.log(result))
//更新多个
User.updateMany({查询条件},{要修i改动值})
    .then(result => console.log(result))

mongoose验证

  • required:true 必传字段
  • minlength:3 字符串最小长度
  • maxlength:20 字符串最大长度
  • min:2 数值最小为2
  • max:100 数值最大为100
  • enum:['html','css','javascript','node.js']
  • trim:true 去除字符串两边空格
  • validate:自定义验证器
  • default:默认值
    获取错误信息:error.errors['字段名称'].message

集合关联
使用populate方法进行关联集合查询

//用户集合
const User = mongoose.model('User',new mongoose.Schema({
    name:{type:String}
}));
//文章集合
const Post = mongoose.model('Post',new mongoose.Schema({
    title:{type:String},
    //使用ID将文章集合和作者集合进行关联
    author:{type:mongoose.Schema.Types.ObjectId,ref:'User'}
}));
//联合查询
Post.find()
    .populate('author')
    .then((err,result) => console.log(result));

你可能感兴趣的:(03 数据库)