1、什么是数据库
数据库是存储数据的仓库,可以讲数据进行有序的分门别类的存储,它是独立语言之外的软件,可以通过api去操作它
常见的数据库软件有 : mysql 、 mongoDB、oracle
2、MongoDB数据库下载安装
下载地址:https://www.mongodb.com/download-center/community
工具下载:https://www.mongodb.com/try/download/database-tools
3、数据库了解
4、mongoose第三方包
npm install mongoose命令下载
5、启动MongoDB数据库
在命令行工具运行 net start mongDB 即可启动 ,否则无法启动
6、数据库连接
使用moogoose提供的connect方法连接数据库。
const mongoose = require('mongoose') mongoose.connect('mongodb://localhost:27017/playground') .then(() => console.log('数据库连接成功')) .catch(error => console.log(error, '数据库连接失败'))
运行node 01.js 就报错了 说这样子不行需要加上以下参数不然会报异常
完整代码如下
// 引入mongoose第三方模块 用来操作数据库
const mongoose = require('mongoose')
7、创建集合规则
// 创建集合规则 const courseSchema = new mongoose.Schema({ name: String, author: String, isPublished: Boolean }) // 使用规则创建集合 // 1、集合名称 // 2、集合规则 const Course = mongoose.model('Course', courseSchema) //courses // 获取异步api // Course.create({ name: 'Javascript', author: '黑马讲师', isPublished: false }, (err, result) => { // // 错误对象 // console.log(err); // // 当前插入文档 // console.log(result); // }) // 通过构造函数插入数据 Course.create({ name: '小程序', author: '黑马讲师', isPublished: true }) .then(result => { console.log(result); }).catch(err => { console.log(err); })
8、mongoDB数据库导入数据
mongoimport -d 数据库名称 -c 集合名称 --file 要导入的文件
在文件夹下新增user.json 静态数据文件
注意每条数据必须在同一行,然后执行命令导入 发现报异常了找不到后来找了方法
【原因】
打开MongoDB安装目录bin文件夹,发现没有mongoimport.exe这个程序
【解决方法】
1.到官网下载压缩包
https://www.mongodb.com/try/download/database-tools?tck=docs_databasetools
2.解压后把bin文件夹里的文件全部拷贝到MongoDB安装目录bin文件夹下在运行 mongoimport -d playground -c users --file ./user.json 这个命令就可以正常导入数据了
9、查询文档find()、findOne()
// 查询用户集合中的所有文档 User.find().then(res => console.log(res)) // 根据指定id 获取数据 User.find({ _id: '60093edfacc33ed1e296eb48' }).then(res => console.log(res)) // findOne方法返回一条文档 默认返回当前集合中的第一条文档 User.findOne({ name: '李四' }).then(res => console.log(res)) // 匹配用户年龄大于20 小于50 User.find({ age: { $gt: 20, $lt: 50 } }).then(res => console.log(res)) // 匹配包含 $in User.find({ hobbies: { $in: ["敲代码"] } }).then(res => console.log(res)) // 选择要查询的字段 User.find().select('name email -_id').then(res => console.log(res)) // 根据年龄升序排序 User.find().sort('age').then(res => console.log(res)) // 根据年龄降序排序 User.find().sort('-age').then(res => console.log(res)) // skip 跳过多少条数据 limit 限制查询数量 User.find().skip(2).limit(3).then(res => console.log(res))
10、 删除文档
// 查找一条数据并且删除 // 返回删除的文档 // 如何查询匹配了多个文档 那么将会删除第一个匹配的文档 User.findOneAndDelete({ _id: "600944c3f760f093f8989016" }).then(res => console.log(res)) // 删除全部数据 // 返回ok:1 删除成功 deletedCount:7 当前删除了7条数据 User.deleteMany({}).then(res => console.log(res))
11、更新文档
// 更新集合中的文档 User.updateOne({ name: '李四' }, { name: '李狗蛋' }).then(res => console.log(res)) // 更新多个集合中的文档 User.updateMany({}, { age: 56 }).then(res => console.log(res))