| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【大数据存储技术】实验2:MongoDB数据库的部署和操作(持续更新) -> 正文阅读 |
|
[大数据]【大数据存储技术】实验2:MongoDB数据库的部署和操作(持续更新) |
实验项目:MongoDB数据库的部署和操作 实验目的:熟练掌握MongoDB数据库单机和集群的部署与配置方法,MongoDB中数据库的管理、集合的管理和文档的增删改查命令、聚合和管道的操作、索引的建立和使用,Java和Python访问MongoDB的方法。 实验仪器:装有Linux操作系统的PC机。 实验内容步骤: 目录 1.1 安装MongoDB(Ubuntu版本:22.04 LTS) ?2.2 MongoDB数据库操作实例(用 MongoDB Shell 设计出 Student 集合) [1-2参考大数据处理技术实验4] 1.实现MongoDB单实例的部署1.1 安装MongoDB(Ubuntu版本:22.04 LTS)1.1.1 查看Ubuntu版本命令:lsb_release -a 1.1.2 使用Ubuntu命令安装(1)更新系统包: sudo apt update(可选) sudo apt upgrade(可选) sudo apt install dirmngr gnupg apt-transport-https ca-certificates software-properties-common (2)安装MongoDB的依赖libssl1.1(安装curl后使用curl命令安装) (3)运行下命令将 MongoDB 存储库添加到的 Ubuntu 系统(可选?) echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list (4)添加MongoDB GPG密钥 wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - (5)添加储存库,同时命令安装MongoDB服务包 sudo apt update sudo apt install mongodb-org(sudo apt install -y mongodb-org) 1.2?启动MongoDB,验证状态sudo systemctl enable mongod sudo systemctl start mongod sudo systemctl status mongod 1.3?测试MongoDBmongo --eval 'db.runCommand({connectionStatus: 1})' 1.4?启动MongoDB Shellmongo ·根据给出的Student文档完成操作
2.使用Shell命令访问MongoDB数据库2.1 数据库操作2.1.1? 数据库:查看、使用和删除数据库·查看当前连接的服务器:db.getMongo() ·查看数据库列表:show dbs ·切换使用某个具体的数据库:use <db> (存在-切换,不存在-创建) 执行use <db>指令后: ·查看数据库中的所有集合:show collections ·以JSON方式显示集合名称:db.getCollectionNames ·查看当前数据库中更详细的集合信息:db.getCollectionInfos() ·删除当前数据库:db.dropDatabase() ·显示当前数据库名称:db 2.1.2 集合:查看、创建和删除集合·新建集合:db.createCollectioin(<name>)? ? ? ? 【字符串作集合名加双引号,区分大小写】 ·删除集合:db.<name>.drop() 2.1.3 文档:文档插入、文档查询、文档更新和文档删除·文档插入: ·向文档中插入数据:db.COLLECTION_NAME.insert(document) ·插入或更新文档时,预先定义文档: ? ? ? ? doc1={item1:'item3',item2:'item4'} ? ? ? ? db.COLLECTION_NAME.insert(doc1) ·插入语句可以同时插入多个语句:db.COLLECTION_NAME.insert(doc1,doc2) ·查看集合中的全部文档:db.COLLECTION_NAME.find()
(这里把mycol写成了myccol,笑死) ?·文档查询: ·返回集合的全部文档: db.mycol.find() db.mycol.find().pretty()
文档更新的基本语法: db.collection.update( ? ? ? ? <query>, ? ? ? ? <update>, ? ? ? ? { ? ? ? ? ? ? ? ? upsert:<boolean>, ? ? ? ? ? ? ? ? multi:<boolean>, ? ? ? ? ? ? ? ? writeConcern:<document> ? ? ? ? } ) ·<query>为查询条件 ·<upate>为更新操作符: ????????$set :设置一系列值 ·upsert为布尔型可选项:不存在可以更新的记录,是否插入一个新值(默认false) ·multi为布尔型可选项:如果存在多个满足查询条件的记录,是否全部更新(默认false) ·writeConcern表示抛出异常的级别:是否在出现网络或服务器故障等时刻抛出错误信息(一般使用时不做设置) ·文档删除: ·删除文档的语法: db.collection.remove( ? ? ? ? <query>, ????????justOne:<boolean> ) <query>为查询条件 justOne为可选的布尔型变量,说明?满足查询条件的文档是全部删除还是只删除一条,默认false(删除满足条件的全部文档) ·删除当前集合中的全部文档: db.col.remove({}) 2.1.4 聚合和管道聚合操作通过aggregate语句实现(支持比较、逻辑、范围和聚合运算符,支持多种管道操作) 管道:将前一条语句的结果作为第二条语句的输入(MongoDB中可以理解为具体的聚合方法) 常见的管道操作:$group、$project、$match、$sort、$limit、$skip 常见的聚合运算符:$sum、$avg、$min/$max、$first/$last、$push 常见的比较运算符:$gt/lt、$gte/$lte、$ne 1. $group管道与分组求和
(1)$project:对显示结果的字段进行调整。(find语句:projection) (2)$match:过滤输出。(find语句:query参数) (3)$sort:结果排序 (4)$limit、$skip:限制显示结果,以及略过返回结果的前几项 管道操作与其他聚合操作配合使用,形成更复杂的查询逻辑
作用:把一个集合列拆分为多个值(将一个文档拆分为多个文档显示) 4. 常见聚合运算符 (1)$sum:求和 (2)$min/$max:返回一个极值 (3)$avg:返回平均值 (4)$first/$last:将资源文档排序后,返回第一个或最后一个文档数据 (5)$push:将数值插入到一个数组中 2.1.5 索引:索引的创建、查看和删除1. 维护索引 建立索引可以提高查询效率 示例语句: db.mycol.createIndex({"item1":1}) db.mycol.createIndex({"item1":1,"item2":-1}) createIndex指令可以设置多个可选参数:
unique:布尔型,表示是否建立唯一索引,默认false dropdups:布尔型,表示是否删除重复记录,默认true weights:整数型,取值在1~99999之间,表示和其他索引相比较的权重 查看某个集合的素有相关索引:db.mycol.getIndexes() ?删除索引:db.mycol.dropIndex("myindex") 删除一个集合的所有索引:db.mycol.dropIndexes()
对字段建立“text”类型索引:db.mycol.createIndex({"item1":"text"}) 针对多个字段建立索引:db.mycol.creeateIndex({"item1":"text","ietm2":"text"})
建立索引后可以进行检索: 对集合进行全文检索:db.mycol.find({$text:{$search:"first"}}) 检索包含多个关键字其中之一的文档:db.mycol.find({$text:{$search:"first second"}}) 检索包含“first”,但不包含“second”的记录:db.mycol.find({$text:{$search:"first -second"}}) 检索包含“first item”完整词组的记录:db.mycol.find({$text:{$search:"\"first item\""}})
3. 地理位置索引(略) 2.2 MongoDB数据库操作实例(用 MongoDB Shell 设计出 Student 集合)(1)创建数据库: Use database_liuhao (2)创建集合: db.createCollection(“Student”) (3)插入数据: db.Student.insert( name:”zhangsan”, score:{ English:70, Math:80, Computer:90 } }) db.Student.insert( name:”lisi”, score:{ English:30, Math:40, Computer:50 } }) 2.用 find()方法输出两个学生的信息。 db.Student.find() db.Student.find().pretty() //易读方式 3.用 find()方法查询 lisi 的所有成绩(只显示 score 列)。 db.Student.find({ name:”lisi”?}, { score:1, _id:0 }) 4.修改 zhangsan 的 Math 成绩为 66。 db.Student.update({name:”zhangsan”},{$set:{“score.Math”:66}}) 3.编程实现MongoDB的访问(1)设计一个应用于实际场景的MongoDB数据库(至少包括两类实体和一个关系),描述数据库设计(画出MongoDB数据库,每个集合至少2个文档,每个文档至少4个键值对),以及如何进行实体和关系的增删改查。例如:学生+课程成绩,顾客+商品,用户+图书,客户+美食,医生+病人,游客+景点,住户+旅馆。 (2)Java访问该MongoDB数据库:实现数据库的连接、集合和文档的创建、文档的增删改查。 4. 实现MongoDB的集群化部署
【参考资料】 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 | -2025/4/22 10:24:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |