前言
这是我参与「第四届青训营」笔记创作活动的第10天
对于前端开发人员,想成为全栈开发,学习数据库是必不可少的。而mongodb对前端人员非常友好!
什么是MongoDb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引
MongoDb使用
- 命令行操作
- 可视化图形工具操作(MongoDb Compass)
- 通过后端代码操作 (mongoose)
通过后端node.js代码操作 (mongoose)
导包
mongoose是nodejs中提供的一个便于操作MongoDB的库
npm i mongoose
连接MongoDb
const mongoose = require('mongoose')
mongoose
.connect('mongodb://127.0.0.1/playground')
// 连接数据成功
.then(() => {
console.log('数据库连接成功')
})
// 失败
.catch((err) => {
console.log(err, '数据库连接失败')
})
创建数据库
在MongoDb中不需要显示创建数据库,如果正在使用的数据库不存在,MongoDb会自动创建
配置集合
- 配置集合结构
const mongoose = require('mongoose')
// 数据库集合配置
// 1.定义数据集合的结构:定义出集合中有哪些属性,属性值是什么类型。
const usersSchema = new mongoose.Schema({
username: String,
password: String
})
- 配置集合模型
// 2.定义数据集合的模型,将Schema和数据库中的集合关联起来
// 第三个参数为 集合名称
const Users = mongoose.model('Users', usersSchema, 'users')
// 向集合中插入文档
Course.create({username: 'ls', password: '12345'},
(err, result) => {
console.log(err)
console.log(result)
}
)
操作数据
-
查询
usersModel.find({ username: 'zs' }) -
新增
usersModel.create({username: 'zs',password: '123'}) -
删除
usersModel.deleteOne({ username: 'zs' }) // 删一个 usersModel.deleteMany({ username: 'zs' }) // 删除所有 -
修改
usersModel.updateOne({id: 1},{username: 'zs',password: '123'})
注意:以上方法为异步方法,需要await等待完成,且以上方法的返回值都是Promise对象。
MongoDb适合场景
MongoDb 适用于以下场景:
-
网站数据:Mongo 非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
-
缓存:由于性能很高,Mongo 也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo 搭建的持久化缓存层可以避免下层的数据源过载。
-
大尺寸、低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
-
高伸缩性的场景:Mongo 非常适合由数十或数百台服务器组成的数据库,Mongo 的路线图中已经包含对MapReduce 引擎的内置支持。
-
用于对象及JSON 数据的存储:Mongo 的BSON 数据格式非常适合文档化格式的存储及查询。
总结
MongoDb基本用法大致是这样😎😁😊