版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目4MongoDB实现学生信息文档的基本操作大连理工大学出版社数据库技术项目化教程(基于NoSQL)导学MongoDB作为一款高性能、易扩展、灵活的NoSQL数据库,在数据存储和检索方面展现出独特的优势。本项目将聚焦于MongoDB中文档的插入、删除、修改操作,通过具体的实例,深入剖析如何运用这些操作来高效管理数据。重点探讨如何使用命令行客户端工具和图形化工具来实现这些操作,并理解其在实际应用场景中的重要性。知识目标知识目标1.理解文档的概念及其在MongoDB中的重要性;3.掌握使用MongoDB命令行客户端工具和和图形化工具MongoDB
Compass进行文档插入、删除、修改操作的方法;2.熟练掌握文档的插入、删除、修改操作的具体语法和用法;能力目标能力目标1.能够熟练运用MongoDB命令行客户端工具和图形化工具MongoDBCompass对文档进行插入、删除、修改操作;0102032.能够根据具体的应用场景,设计合理的文档结构,并实现高效的文档操作;3.能够分析和解决在文档操作过程中遇到的问题。素质目标素质目标1.培养严谨细致的工作态度;012.提升团队协作与沟通能力;023.培养良好的职业素养。03任务4.1学生信息文档的操作【任务描述】集合类似于表,创建集合后,里面还没有数据,需要在集合中插入文档。本任务聚焦于文档的增加操作,旨在通过实践,熟练运用MongoDB的文档增加功能,实现信息的数字化录入。通过完成本节任务,能够将现实中的信息转化为数据库中的文档,为后续的信息查询、更新和删除等操作奠定坚实的基础。4.1.1文档的定义4.1.1文档的定义MongoDB中的文档是数据库中的基本数据单元,类似于关系型数据库中的“行”记录。但与关系型数据库不同,MongoDB的文档采用BSON(BinaryJSON)格式存储,这种格式不仅保留了JSON的灵活性和易读性,还扩展支持了更多数据类型。文档由字段-值对组成,其中字段名是字符串,值可以是各种数据类型,包括字符串、数字、日期、数组,甚至是嵌套的其他文档。这种灵活的结构使得MongoDB能够轻松处理复杂和层次化的数据结构。MongoDB中的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关系型数据库有很大的区别。4.1.2文档的结构特点4.1.2文档的结构特点每个MongoDB文档都有以下重要特性:唯一标识符:每个文档都有一个特殊的“_id”字段作为主键。如果不显式提供,MongoDB会自动生成一个ObjectId类型的值。字段顺序:与JSON不同,MongoDB会保留文档中字段的顺序(除了“_id”始终位于首位)。大小限制:单个文档的最大大小为16MB,这适用于大多数应用场景。字段命名:字段名区分大小写且必须是字符串,遵循特定的命名规则。4.1.3命令行客户端工具操作文档4.1.3命令行客户端工具操作文档集合类似于表,那么集合创建后需要在集合中插入文档,同时还可以对文档进行删除和修改。插入文档下面以员工信息文档为例进行介绍。员工信息集合employee中有6名员工,文档信息见表4-1。需要注意的是,在MongDB中插入文档时,如果没有指定_id字段,那么MongoDB会自动生成一个_id字段,这个字段可以理解成这个文档的关键字,它具有全局唯一性。表4-1文档信息表插入文档使用insertOne()插入文档insertOne()方法用于在集合中插入单个文档,语法格式如下:db.collection.insertOne(document,options)语法说明如下:document:要插入的单个文档;options(可选):一个可选参数对象,可以包含writeConcern和bypassDocumentValidation等。writeConcern:指定写入操作的保障级别;bypassDocumentValidation:是否跳过文档验证。插入文档使用insertOne()插入文档db.employee.insertOne({
_id:001,employeeid:2015001,name:"张原",Sex:"男",age:35,
department:"智能工程学院"})【实例4-1】在员工信息集合employee中插入表4-1的第一个文档。插入文档使用insertMany()插入文档insertMany()方法用于在集合中插入多个文档,语法格式如下:db.collection.insertMany(documents,options)语法说明如下:documents:要插入的文档数组;options(可选):一个可选参数对象,可以包含ordered、writeConcern和bypassDocumentValidation等。ordered:是否按顺序插入文档(默认为true);writeConcern:指定写入操作的保障级别;bypassDocumentValidation:是否跳过文档验证。插入文档使用insertMany()插入文档【实例4-2】在员工信息集合employee中插入表4-1的其他文档。db.employee.insertMany([{employeeid:2015002,name:"李力",Sex:"男",age:40,department:"数字财商学院"},{employeeid:2015003,name:"王峰",Sex:"男",age:36,department:"数字财商学院"},{employeeid:2015004,name:"吴刚",Sex:"男",age:46,department:"汽车学院"},{employeeid:2015005,name:"何玉",Sex:"女",age:50,department:"数字财商学院"},{employeeid:2015006,name:"陈笑远",Sex:"女",age:53,department:"汽车学院"}])插入文档使用db.collection.save()插入文档save()方法在插入文档时类似于insertOne()。如果文档包含_id字段且已存在,则该文档会被更新;如果文档不包含_id字段或_id不存在,则会插入一个新文档。语法格式如下:db.collection.save(document,options)语法说明如下:document:要插入的单个文档;options(可选):一个可选参数对象,可以包含writeConcern等。需要注意的是,从MongoDB4.2开始,db.collection.save()已被标记为弃用,官方推荐使用db.collection.insertOne()或db.collection.replaceOne()替代。更新文档更新操作用于修改集合中的现有文档
,在MongoDB中,更新文档的操作可以使用多种方法实现,常用的方法包括updateOne()、updateMany()、replaceOne()和findOneAndUpdate()。更新文档updateOne()updateOne()方法更新集合符合条件的单个文档。语法格式如下:db.collection.updateOne(filter,update,options)语法说明如下:filter:用于查找文档的查询条件;update:指定更新操作的文档或更新操作符(如$set);options:可选参数对象,如upsert、arrayFilters等。upsert:如果未找到匹配的文档,是否插入新文档(默认为false);arrayFilters:用于更新数组中的特定元素。更新文档updateOne()需要注意的是,在更新文档时,可以使用以下操作符来执行特定操作:$set:设置字段的值。$inc:递增字段的值。$unset:删除字段。$push:向数组字段添加元素。$pop:删除数组字段中的最后一个元素。$addToSet:向数组字段添加唯一元素。更新文档updateOne()【实例4-3】在员工信息集合employee中将employeeid为2015001的员工age修改为50。db.employee.updateOne({"employeeid":2015001},{"$set":{"age":50}})更新文档updateMany()updateMany()方法用于更新集合内所有符合条件的文档。语法格式如下:db.collection.updateMany(filter,update,options)语法说明如下:filter:用于查找文档的查询条件;update:指定更新操作的文档或更新操作符(如$set);options:可选参数对象,如upsert、arrayFilters等。upsert:如果未找到匹配的文档,是否插入新文档(默认为false);arrayFilters:用于更新数组中的特定元素。更新文档updateMany()【实例4-4】在员工信息集合employee中将department为数字财商学院的员工department修改为智能财商学院。db.employee.updateMany({"department":"数字财商学院"},{"$set":{"department":"智能财商学院"}})更新文档replaceOne()replaceOne()方法用于替换符合条件的单个文档,新的文档将完全替换旧的文档。语法格式如下:db.collection.replaceOne(filter,replacement,options)语法说明如下:filter:用于查找文档的查询条件;replacement:新的文档,将替换旧的文档;options:可选参数对象,如upsert等。更新文档replaceOne()db.employee.replaceOne({employeeid:2015004},{employeeid:2015004,name:"吴刚",Sex:"男",age:47,department:"智能工程学院"})【实例4-5】在员工信息集合employee中将employeeid为2015004的文档修改如下:name:吴刚,Sex:男,age:47,department:智能工程学院。更新文档findOneAndUpdate()findOneAndUpdate()方法用于查找并更新单个文档,可以选择返回更新前或更新后的文档。语法格式如下:db.collection.findOneAndUpdate(filter,update,options)语法说明如下:filter:用于查找文档的查询条件;update:指定更新操作的文档或更新操作符;options:可选参数,支持upsert、returnDocument(指定返回更新前或更新后的文档)。更新文档findOneAndUpdate()【实例4-6】在员工信息集合employee中将employeeid为2015001的员工age修改为40,并返回更新后的文档。db.employee.findOneAndUpdate({"employeeid":2015001},{"$set":{"age":40}},{returnDocument:"after"})删除文档删除文档的使用场景:删除不再需要的旧数据或无效数据;在数据修正过程中删除错误的或重复的文档;在自动化脚本或任务中,根据特定条件删除文档。常用的删除文档方法包括deleteOne()、deleteMany()以及findOneAndDelete()。删除文档deleteOne()deleteOne()方法用于删除满足查询条件的单个文档。语法格式如下:db.collection.deleteOne(filter,options)语法说明如下:filter:用于查找要删除的文档的查询条件;options(可选):一个可选参数对象,用于指定删除操作的配置。删除文档deleteOne()【实例4-7】在员工信息集合employee中将employeeid为2015001的文档。db.employee.deleteOne({employeeid:2015001})删除文档deleteMany()deleteMany()方法用于删除所有满足查询条件的文档。语法格式如下:db.collection.deleteMany(filter,options)语法说明如下:filter:用于查找要删除的文档的查询条件;options(可选):一个可选参数对象,用于指定删除操作的配置。删除文档deleteMany()【实例4-8】在员工信息集合employee中删除汽车学院的文档。db.employee.deleteMany({department:"汽车学院"})删除文档findOneAndDelete()findOneAndDelete()方法用于查找并删除单个文档,并可以返回删除的文档。findOneAndDelete()返回被删除的文档,如果找不到匹配的文档,则返回null。语法格式如下:db.collection.findOneAndDelete(filter,options)语法说明如下:filter:用于查找要删除的文档的查询条件;options:可选参数对象,用于指定删除操作的配置。删除文档findOneAndDelete()
db.employee.findOneAndDelete({department:"智能财商学院"})【实例4-9】在员工信息集合employee中查找并删除智能财商学院的文档。任务4.2学生信息文档的字段管理【任务描述】在实际应用中,经常需要对学生信息文档的结构进行调整,比如添加新字段、删除不需要的字段或者修改字段名称。本任务将学习如何对文档中的字段进行管理,包括添加字段、删除字段和重命名字段等操作,使学生能够灵活地维护和优化文档结构。4.2.1字段的定义4.2.1字段的定义在MongoDB数据库中,字段的定义是文档中的键值对中的“键”(Key),用于标识和访问文档中存储的数据。字段本质上就是文档中的属性名或数据标签,它告诉MongoDB如何识别和组织文档中的信息。每个字段都有一个名称和对应的值,字段名必须是字符串,而字段值可以是各种BSON数据类型,包括字符串、数字、布尔值、数组、日期甚至是嵌套的文档。4.2.2与关系型数据库字段的区别4.2.2与关系型数据库字段的区别与传统关系型数据库不同,MongoDB中的字段是动态和灵活的,不需要预先定义数据库模式,同一集合中的不同文档可以包含完全不同的字段集合,而且相同字段在不同文档中也可以存储不同类型的数据,具体见表4-2。表4-2与关系型数据库字段的区别4.2.3命令行客户端工具管理字段4.2.3命令行客户端工具管理字段在MongoDB中管理文档字段时,可以根据实际需求动态添加、删除或修改字段,这种灵活性是MongoDB作为NoSQL数据库的重要特性。下面以员工信息文档为例进行介绍。使用$set添加字段$set操作符用于为文档添加新字段或更新现有字段的值,语法格式如下:db.collection.updateOne(filter,{$set:{field:value}},options)或db.collection.updateMany(filter,{$set:{field:value}},options)语法说明如下:filter:用于筛选要更新文档的条件;$set:指定要添加或更新的字段及其值;options(可选):一个可选参数对象,可以包含upsert等选项。使用$set添加字段useemployee_infodb.employee.updateMany({},{$set:{enrollment_year:2015}})【实例4-10】为员工信息集合employee文档添加enrollment_year字段(入职年份),默认值为2015。使用$rename重命名字段$rename操作符用于修改文档中字段的名称,语法格式如下:db.collection.updateOne(filter,{$rename:{old_field_name:new_field_name}},options)或db.collection.updateMany(filter,{$rename:{old_field_name:new_field_name}},options)语法说明如下:filter:用于筛选要更新文档的条件;$rename:指定要重命名的字段映射;options(可选):一个可选参数对象。使用$rename重命名字段【实例4-11】将【实例4-10】中添加enrollment_year字段重命名为enroll_year。db.employee.updateMany({},{$rename:{"enrollment_year":"enroll_year"}})
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年体育教育知识与能力培养方案
- 2026年法医病理学司法鉴定备考题
- 2026年挖掘机司机招聘考试题库
- 2026年冬季家庭消防安全知识讲座
- 2026年高考英语阅读理解技巧与仿真题
- 2026年景观设计师资格考试笔试模拟题
- 2026年小学生心理健康知识手册
- 2026年软考网络工程师模拟题及答案
- 2026年证券从业金融市场高频考点集
- 2026年中级审计师专业知识
- 室内设计cad培训
- 六年级数学总复习立体图形名师公开课获奖课件百校联赛一等奖课件
- 2024年歌尔股份有限公司校园招聘考试试题汇编
- MOOC 针灸学-经络养生与康复-暨南大学 中国大学慕课答案
- 招标代理机构工作培训课件
- 电化学全套课件
- 大唐国际600MW仿真机题
- 红色旅游项目可行性研究报告
- 河北省唐山市高新区2022-2023学年数学三下期末综合测试试题含解析
- 工程项目法律风险管控办法
- WS/T 82-1996蜡样芽胞杆菌食物中毒诊断标准及处理原则
评论
0/150
提交评论