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