NOSQL基础命令完成任务——MongoDB

2025-12-31 70 12/31

文档中均为 MongoDB Shell 命令(非 SQL 语句),MongoDB 是 NoSQL 数据库,用文档模型存储数据,命令逻辑与 SQL 不同

一个MongoDB数据库,里面存放着如下数据

name sex age year major class hobbies note
张远 18 2025 计算机 01 唱歌,篮球 班长
邓小玲 20 2025 计算机 02 绘画,钢琴,跳舞
苏明明 19 2025 计算机 01 编程,足球,篮球 省级奖学金
张红 17 2024 计算机 01 游泳,阅读
张晓峰 19 2025 人工智能 01 篮球,唱歌
赵菲 18 2024 人工智能 02 阅读,电影,爬山 学生会主席
王宁 19 2025 人工智能 01 游泳,编程

 

接下来处理任务,完成简单需求

任务一 :创建数据库和集合
1. 查看当前连接中的数据库列表;
实现命令:show dbs

 

2. 创建一个名为 mydb 的数据库;
实现命令:use mydb

 

3. 查看数据库 mydb 的信息;
实现命令:db.stats()

 

4. 以显示方式在 mydb 数据库中创建集合 student;
实现命令:db.createCollection("student")

 

5. 以隐式方式在 mydb 数据库中创建集合 student_1;
实现命令:db.student_1.insertOne({name: "test"})

 

6. 查看当前数据库中的集合列表;
实现命令:show collections

 

7. 删除集合 student_1;
实现命令:db.student_1.drop()

 

任务二:插入文档
请按下列要求将上表中的数据插入文档 student 中,其中 year、major、class 为 department 键的嵌入文档,hobbies 和 note 为数组类型。

1. 将表中的第一行数据插入到集合中(一次插入一条文档);
实现命令:
db.student.insertOne({
name: "张远",
sex: "男",
age: 18,
department: {
year: 2025,
major: "计算机",
class: "01"
},
hobbies: ["唱歌", "篮球"],
note: ["班长"]
})

 

2. 任选三条数据插入到集合中(一次性有序插入多条文档);
实现命令:
db.student.insertMany([
{
name: "邓小玲",
sex: "女",
age: 20,
department: {
year: 2025,
major: "计算机",
class: "02"
},
hobbies: ["绘画", "钢琴", "跳舞"],
note: []
},
{
name: "苏明明",
sex: "男",
age: 19,
department: {
year: 2025,
major: "计算机",
class: "01"
},
hobbies: ["编程", "足球", "篮球"],
note: ["省级奖学金"]
},
{
name: "张红",
sex: "女",
age: 17,
department: {
year: 2024,
major: "计算机",
class: "01"
},
hobbies: ["游泳", "阅读"],
note: []
}
])

 

3. 将剩余数据插入到集合中(一次性无序插入多条文档);
实现命令:
db.student.insertMany([
{
name: "张晓峰",
sex: "男",
age: 19,
department: {
year: 2025,
major: "人工智能",
class: "01"
},
hobbies: ["篮球", "唱歌"],
note: []
},
{
name: "赵菲",
sex: "女",
age: 18,
department: {
year: 2024,
major: "人工智能",
class: "02"
},
hobbies: ["阅读", "电影", "爬山"],
note: ["学生会主席"]
},
{
name: "王宁",
sex: "男",
age: 19,
department: {
year: 2025,
major: "人工智能",
class: "01"
},
hobbies: ["游泳", "编程"],
note: []
}
], { ordered: false })

 

任务三:查询文档
1. 查询集合 student 中的所有文档;
实现命令:db.student.find()

 

2. 查询集合 student 中所有学生的姓名和性别;
实现命令:db.student.find({}, { name: 1, sex: 1, _id: 0 })

 

3. 查询所有男生的信息;
实现命令:db.student.find({ sex: "男" })

 

4. 查询年龄大于18岁的学生;
实现命令:db.student.find({ age: { $gt: 18 } })

 

5. 查询年龄小于等于18岁的女生的姓名和年龄;
实现命令:
db.student.find(
{ sex: "女", age: { $lte: 18 } },
{ name: 1, age: 1, _id: 0 }
)

6. 查询“计算机”专业的学生;
实现命令:db.student.find({ "department.major": "计算机" })

 

7. 查询“人工智能”专业“01”班的学生;
实现命令:
db.student.find({
"department.major": "人工智能",
"department.class": "01"
})

 

8. 查询“计算机”专业或年龄大于18岁的学生;
实现命令:
db.student.find({
$or: [
{ "department.major": "计算机" },
{ age: { $gt: 18 } }
]
})

 

9. 查询爱好“篮球”的学生姓名和性别;
实现命令:
db.student.find(
{ hobbies: "篮球" },
{ name: 1, sex: 1, _id: 0 }
)

 

10. 查询第一个爱好是“编程”的学生姓名和专业;
实现命令:
db.student.find(
{"hobbies.0":"编程"},
{name:1,"department.major":1,_id:0}
)

 

11. 查询爱好“篮球”和“游泳”的学生姓名;
实现命令:
db.student.find( { hobbies: { $all: ["篮球", "游泳"] } }, { name: 1, _id: 0 } )

 

12. 查询只有两个爱好的学生;
实现命令:db.student.find({ hobbies: { $size: 2 } })

 

13. 查询表中所有的专业(不含重复值);
实现命令:db.student.distinct("department.major")

 

14. 查询 note 字段为 null 的学生;
实现命令:db.student.find({ note: { $size: 0 } })

 

15. 查询包含 note 字段的文档;
实现命令:db.student.find({ note: { $exists: true } })

 

16. 查询所有学生,结果按年龄降序排列;
实现命令:db.student.find().sort({ age: -1 })

 

17. 查询集合中的第一条记录;
实现命令:db.student.findOne()

 

18. 查询集合中第3条至第5条记录;
实现命令:db.student.find().skip(2).limit(3)

 

19. 查询年龄最小的学生;
实现命令:db.student.find().sort({ age: 1 }).limit(1)

 

20. 统计集合中所有“计算机”专业的人数;
实现命令:db.student.countDocuments({ "department.major": "计算机" })

 

任务四:更新文档
1. 更新单个文档
(1) 将集合中第1个学生的年龄增加 1 岁;
实现命令:
db.student.updateOne({}, { $inc: { age: 1 } }, { sort: { _id: 1 } })

 

(2) 将“苏明明”的班级改为“02”班;
实现命令:db.student.updateOne({ name: "苏明明" }, { $set: { "department.class": "02" } })

 

(3) 为所有文档增加字段 credit,并设置初始值为30;
实现命令:db.student.updateMany({}, { $set: { credit: 30 } })

 

(4) 将 note 字段名改为 mark;
实现命令:db.student.updateOne({}, { $rename: { "note": "mark" } })

 

(5) 将“王宁”的专业改为“计算机”,并返回更新后的文档;
实现命令:
db.student.findOneAndUpdate({ name: "王宁" }, { $set: { "department.major": "计算机" } }, { returnNewDocument: true })

 

(6) 给“张红”增加爱好“手工”和“吉他”;
实现命令:
db.student.updateOne({ name: "张红" }, { $push: { hobbies: { $each: ["手工", "吉他"] } } })

 

(7) 将 hobbies 数组中的值按降序排列,并输出前两个爱好;
实现命令:
db.student.updateOne({}, { $push: { hobbies: { $each: [], $sort: -1, $slice: 2 } } }, { sort: { _id: 1 } })

 

(8) 在“苏明明”的 note 数组的首位增加“团支书”;
实现命令:
db.student.updateOne({ name: "苏明明" }, { $push: { note: { $each: ["团支书"], $position: 0 } } })

 

(9) 删除“邓小玲”爱好数组中的最后一个值;
实现命令:
db.student.updateOne({ name: "邓小玲" }, { $pop: { hobbies: 1 } })

 

(10) 删除“赵菲”爱好字段中的“电影”;
实现命令:
db.student.updateOne({ name: "赵菲" }, { $pull: { hobbies: "电影" } })

 

2. 更新多个文档
(1) 将所有学生的年龄增加1岁;
实现命令:db.student.updateMany({}, { $inc: { age: 1 } })

 

(2) 将“计算机”专业学生的 credit 值增加 5 分;
实现命令:db.student.updateMany({ "department.major": "计算机" }, { $inc: { credit: 5 } })

 

3. 替换文档中的数据
(1) 自拟数据,替换“王宁”的信息;
实现命令:db.student.replaceOne({ name: "王宁" }, { name: "王宁", sex: "男", age: 20, department: { year: 2025, major: "软件工程", class: "03" }, hobbies: ["跑步", "编程", "摄影"], note: ["校编程大赛一等奖"], credit: 35 })

 

(2) 自拟数据,替换“人工智能”专业年龄最大的学生的信息,并返回替换后的数据;
实现命令:db.student.findOneAndReplace( { "department.major": "人工智能" }, { name: "张晓峰", sex: "男", age: 21, department: { year: 2025, major: "人工智能", class: "01" }, hobbies: ["篮球", "深度学习", "吉他"], note: ["研究生推免资格"], credit: 40 }, { sort: { age: -1 }, returnNewDocument: true })

 

任务五:删除文档
1. 删除“王宁”的数据;
实现命令:db.student.deleteOne({ name: "王宁" })

 

2. 删除“人工智能”专业“02”班的所有数据;
实现命令:db.student.deleteMany({ "department.major": "人工智能", "department.class": "02" })

 

3. 删除集合 student 中的所有数据;
实现命令:db.student.deleteMany({})

- THE END -

sanoplluser

12月31日16:24

最后修改:2025年12月31日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论