# MongoDB 初识
# 介绍
# 重要概念
MongoDB 是一个文档型数据库,属于 NoSQL 数据库,不需要使用 SQL 语句,易学易用
MongoDB 的数据是以 BSON 格式进行存储
BSON 是一种类 json 的一种二进制形式的存储格式,简称 Binary JSON,它和 JSON 一样,支持内嵌的文档对象和数组对象,但是 BSON 有 JSON 没有的一些数据类型,如 Date 和 BinData 类型
BSON 有三个特点:轻量性、可遍历性、高效性
MongoDB 以文档形式存储数据,每个文档的格式类似于 JSON
# 层级关系
库(database) > 集合(collection) > 文档(document)
# MongoDB 与 MySQL、Redis 的区别
名称 | 类型 | 存储方式 | 操作 | 存储位置 |
---|---|---|---|---|
MySQL | 关系型 | 表格形式存储 | SQL 操作 | 计算机硬盘 |
Redis | 非关系型 | key-value 形式存储 | NoSQL 操作 | 计算机内存 |
MongoDB | 非关系型 | 文档形式存储 | NoSQL 操作 | 计算机硬盘 |
# 命令行操作
# 基本操作
show dbs # 查看所有数据库
use <dbName> # 切换数据库,如果没有则会自动创建
show collections # 查看数据库中的集合
db.<collection>.drop() # 删除集合包括集合的内容
1
2
3
4
2
3
4
# 查询操作
1
# 查询示例
# 查询集合中的所有文档
db.<collection>.find()
# 查询age为18的文档
db.<collection>.find({"age":18})
# 查询所有,然后进行排序,排序默认为升序
db.<collection>.find().sort({_id:-1}) # 按照_id降序排列
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 插入操作
注意:如果在未创建的集合中插入文档,则会自动创建该集合并插入文档
# 插入示例
# 插入单条数据
db.<collection>.insert({"name":"123木头人"})
# 插入多条数据
db.<collection>.insert(
{"name":"123木头人"},
{"age":18},
{"content":"123456789"}
)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 更新操作
# 更新示例
db.<collection>.update(
{"属性1":"属性值1"}, # 更新条件
{"$set":{"属性值1":"属性值1"}} # 更新的内容
)
1
2
3
4
2
3
4
# 删除操作
# 删除示例
# 删除条件
db.<collection>.remove({"属性1":"属性值1"})
1
2
2
# 工具使用
# mongodb 安装
npm i mongodb
1
# 使用示例
const MongoClient = require('mongodb').MongoClient
const url = 'mongodb://localhost:27017'
const dbName = 'myblog'
MongoClient.connect(
url,
{ useUnifiedTopology: true }, // 配置
(err, client) => {
if (err) {
return console.error(err)
}
// 连接成功
console.log('mongodb connect success')
// 切换数据库
const db = client.db(dbName)
// 使用集合
const usersCollection = db.collection('users')
// 添加
usersCollection
.insertOne({
username: 'admin',
password: '123456',
realName: '123木头人'
})
.then(res => {
console.log(res)
})
.catch(err => {
console.error(err)
})
// 删除
usersCollection
.deleteOne({ a: 100 })
.then(res => {
console.log(res)
})
.catch(err => {
console.error(err)
})
// 修改
usersCollection
.updateOne({ id: '9527' }, { $set: { id: 9527 } })
.then(res => {
console.log(res)
})
.catch(err => {
console.error(err)
})
// 查询
usersCollection
.find({
// num: 10
})
.toArray()
.then(res => {
console.log(res)
})
.catch(err => {
console.error(err)
})
}
)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Mongoose 安装
npm i mongoose
1
# 概述
Schema 定义数据格式的规范
以 Model 规范 Collection
规范数据操作的 API