1.(可选)安装MongoDB可视化工具robo 3T软件
下载地址: Download Studio 3T for MongoDB | Windows, macOS & Linux
下载与系统对应的版本,双击运行安装即可。
2、数据库操作,创建、查询和修改员工信息数据库。
(1)创建一个新的数据库,以姓名首字母+employee命名,创建集合用姓名首字母命名。
(2)存入以下数据:
name | department | age |
张三 | production | 36 |
李四 | finance | 48 |
王五 | production | 32 |
赵六 | marketing | 27 |
孙七 | production | 34 |
周八 | production | 36 |
吴九 | marketing | 38 |
(3)完成以下问题,并观察操作的结果和分析得到该结果的原因:
①使用save命令添加数据:_id为test_id, name为小王;
使用save(object)命令时,object代表需要更新的对象,如果集合内部已经存在一个和object相同的“_id”的记录,MongoDB会把object对象替换集合内已存在的记录,如果不存在,则会插入object对象。添加数据前集合中没有“_id”为“test_id”的数据,故而此数据插入成功。
②使用save增加一个:_id为test_id, name为小李的数据;
插入数据前集合内部已经存在和object相同的“_id”的记录小王,故而插入小李的数据时,MongoDB会把小王的记录替换成小李的记录,即按“_id”执行更新数据的操作。
③使用insert增加数据:_id为test_id, name为小张的数据。
nsert()操作为插入操作,当指定_id的值时会取指定值,不指定_id的值时将会自动创建_id的值。因为插入数据前集合中已有_id=”test_id”的数据,故而插入此条数据失败。
(4)完成以下文档更新操作:在department为marketing的员工集合中添加一个work_place字段,值为room1。
(5)文档查询:
①查询其中age为36的员工,结果中只显示员工姓名字段。
db.getCollection("gx").find({age:36}, {name:1})
②查询集合中年龄大于35岁的员工。
db.getCollection("gx").find({age:{$gt:35}})
③查询department为marketing和finance的员工。
db.getCollection("gx").find(
{department:{$in:["marketing", "finance"]}}
)
④查询年龄最大的两位员工。
db.getCollection("gx").find().sort(({age:-1})).limit(2)
四、实验总结:
本次实验我完成了用MongoDB创建、查询和修改员工信息数据库的操作,实验整体完成较为顺利。在实验中通过对save()、insert()等操作的对比查询,我对插入更新操作的功能及区别有了更系统的学习认识,也明白了这是在今后做MongoDB实验时需要注意的地方。
通过本次实验,我有效地复习了理论课和PPT上的知识点,提高了对MongoDB的理解与运用能力,收获颇丰,谢谢马老师!