MongoDB 是一个跨平台的,以 JSON 为数据模型的文档数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。
1、 MongoDB 与 MySQL 数据库

- 数据库操作
--创建数据库
use db1
--查看数据库
show dbs
--删除数据库
db.dropDatabase()
- 集合操作
--创建集合
db.createCollection("users")
--查看集合
show collections
--删除集合
db.users.drop()
2、mongoDB数据操作
2.1、文档的插入操作
注意:在 MongoDB 中不需要提前创建集合就可以直接插入文档,在插入文档的同时自动创建集合
- 插入文档
db.fruits.insert(
[
{ "name": "apple", "price": 10, "color": ["red", "green"], },
{ "name": "banana", "price": 8, "color": ["yellow", "green"], },
{ "name": "mongo", "price": 12, "color": ["yellow", "green"], },
]
)
- 插入一条文档
db.users.insertOne(
{
"username": "zhangsan",
"password": "88888888",
"form": { "country": "China", "city": "Beijing" }
}
)
- 插入多条文档
db.users.insertMany(
[
{
"username": "lisi",
"password": "4444",
"form": { "country": "China", "city": "Shanghai" }
},
{
"username": "wanger",
"password": "666666",
"form": { "country": "China", "city": "Shenzhen" }
},
]
)
2.2、文档的查询操作
- 单条件查询文档
db.users.find(
{ "username": "zhangsan" }
)
- 多条件
and查询文档
db.users.find(
{ "username": "zhangsan", "password": "88888888" }
)
- 多条件
and查询文档的另一种形式
db.users.find(
{
$and: [
{ "username": "zhangsan" },
{ "password": "88888888" }
]
}
)
- 多条件
or查询文档
db.users.find(
{
$or: [
{ "username": "zhangsan" },
{ "password": "88888888" }
]
}
)
- 正则表达式查询文档
db.users.find(
{ username: /^zhang/ }
)
- 查询条件对比表

- 查询逻辑对照表

- 查询子文档
db.users.find(
{ "form.country": "China" }
)
- 控制查询返回的字段
db.fruits.find(
{ "name": "apple" }, { "_id": 0, "name": 1, "color": 1 }
)
注意:其中 _id name color 的 0 表示不返回字段,其中的 1 表示返回字段
2.3、文档的更新操作
- 更新一条文档
db.fruits.updateOne(
{ "name": "banana" }, { $set: { "price": 20 } }
)
注意:updateOne 不管查询到多少条文档都只更新第一条文档
- 更新多条文档
db.fruits.updateMany(
{ "name": "banana" }, { $set: { "price": 20 } }
)
注意:updateMany 查询到多少条文档就更新多少条文档
- 更新数组操作符

2.4、文档的删除操作
-
删除
price = 10的文档
db.fruits.remove(
{ "price": 10 }
)
- 删除
price < 12的文档
db.fruits.remove(
{ "price": { $lt: 12 } }
)
- 删除所有文档
db.fruits.remove({})
3、聚合查询
在 MongoDB 中聚合查询 aggregate 是以管道的形式进行处理数据并主要用于处理数据统计、平均值、求和等
- 聚合查询
db.fruits.aggregate(
[
{ $group: { _id: "$name", total: { $sum: 1 } } },
{ $project: { name: "$name", total: "$total" } },
]
)
注意:这里对 fruits 集合进行聚合查询,先按 name 字段进行分组并合计分组的数量,然后在返回 name 字段和分组后的 total 字段进行显示
- 常用聚合查询对照表

4、索引
db.fruits.createIndex(
{ name: 1 },
{ background: true },
)
注意:创建索引最好的方法是使用 ESR 原则,精确( Equal )匹配的字段放在最前面,排序( Sort )条件放中间,范围( Range )匹配的字段放最后
5、备份与恢复
- 备份
db1数据库中的users集合
mongodump -h 127.0.0.1:27017 -d db1 -c users
注意:备份时不指定路径,默认备份在 /dump 目录中,如果数据库有权限请加上 -u username -p password 和 --authenticationDatabase admin 参数执行命令
- 恢复
db1数据库中的users集合
mongorestore -h 127.0.0.1:27017 -u username -p password -d db1 -c users /dump/db1/users.bson --authenticationDatabase admin
注意:恢复时指定路径在 /dump 目录中的具体文件,如果数据库有权限请加上 -u username -p password 和 --authenticationDatabase admin 参数执行命令






![[附源码]Python计算机毕业设计Django+Vue的健身房会员系统的设计与实现](https://img-blog.csdnimg.cn/fce9b88f7f7e42c59fb1f75563925dee.png)












