【大数据存储与处理】实验三 MongoDB 数据库操作

实验三 MongoDB 数据库操作 

【实验目的】: 

1. 掌握 MongoDB 数据库的基本概念 

2. 掌握 MongoDB 创建数据库 

3. 掌握 MongoDB 删除数据库 

【实验内容与要求】: 

MongoDB 是一个开源文档数据库,提供高性能,高可用性和自动扩展,旨在为 WEB 

应用提供可扩展的高性能数据存储解决方案。 

MongoDB 中的记录是一个文档,它是由字段和值(key=>value)对组成的数据结构。 

MongoDB 文档与 JSON 对象相似。 字段的值可能包括其他文档,数组和文档数组。 

在 mongodb 中基本的概念是文档(document)、集合(collection)、数据库(database)。 

SQL 术语/概念 MongoDB 术语/概念 

解释/说明 

database 

database 

数据库 

table 

collection 

数据库表/集合 

row 

document 

数据记录行/文档 

column 

field 

数据字段/域 

index 

index 

索引 

table joins 

表连接,MongoDB 不支持 

primary key 

primary key 

主键,MongoDB 自动将_id 字段 

设置为主键 

例如: 

启动集群服务: 

master 节点 1——192.168.226.132《大数据存储与处理》实验指导书 

mongod -f /home/app/mongodb/master.conf 

slave1 节点 2——192.168.226.130: 

mongod -f /home/app/mongodb/slave1.conf 

arbiter 节点 3——192.168.226.131: 

mongod -f /home/app/mongodb/arbiter.conf 

执行 mongo 192.168.226.132 命令进入 mongodb shell 

关闭 mongodb 务必使用关闭服务命令: 

master 节点 1——192.168.226.132: 

mongod --journal --shutdown -f /home/app/mongodb/master.conf 

slave1 节点 2——192.168.226.130: 

mongod --journal --shutdown -f /home/app/mongodb/slave1.conf 

arbiter 节点 3——192.168.226.131: 

mongod --journal --shutdown -f /home/app/mongodb/arbiter.conf 

题目 0:进入 mongodb shell 

执行 mongo 192.168.226.132 命令进入 mongodb shell(注意这里 mongod 的服务已经启 

动) 

题目一:MongoDB 创建数据库 

MongoDB 创建数据库的语法格式如下: 

use “DATABASE_NAME” 

如果数据库不存在,则创建数据库,否则切换到指定数据库。 

例如:以下示例创建了数据库use Employee: 

- 25 -《大数据存储与处理》实验指导书 

如果想查看所有数据库,可以使用 show dbs 命令: 

可以看到,刚创建的数据库 Employee 并不在数据库的列表中, 要显示它,需要向 

Employee 数据库插入一些数据。 

MongoDB 中默认的数据库为 test,如果没有创建新的数据库,集合将存放在 test 数据 

库中。 

题目二:MongoDB 删除数据库 

MongoDB 删除数据库的语法格式如下: 

db.dropDatabase() 

删除当前数据库,默认为 test,可以使用 db 命令查看当前数据库名。 

首先,使用 show dbs 查看所有数据库,然后用 use 切换到数据库 Employee,再进行删 

除操作,最后使用 show 查看数据库是否删除成功,操作步骤如图所示:

题目三:集合操作 

1. 创建集合的方法 

命令格式:db.createCollection(name, options) 

例如在 myDB 数据库下创建 myCollection 集合, 

执行以下命令: 

db.createCollection("myCollection") 

查询数据库中所有的集合使用 show collections, 

对集合重命名使用 renameCollection 方法,如下图所示: 

删除集合使用 drop 方法,参考上图。 

相关操作: 

1)插入数据 

db.myColl.insert({'username':'zhangyu','age':13,'salary':500}); 

db.myColl.insert({'username':'zhangyu','age':13,'salary':500}); 

db.myColl.insert({'username':'laohu','age':20,'salary':200}); 

db.myColl.insert({'username':'banma','age':13,'salary':300}); 

db.myColl.insert({'username':'xiongmao','age':8,'salary':300}); 

2)统计集合中数据条数。 

db.myColl.count() 

3)查询第一条数据。 

db.myColl.findOne() 

注意,findOne 中的 要大写。 

4)查询第 条以后的所有数据。 

db. myColl.find().skip(1) 

5)跳过第 条,查询后两条数据。 

db. myColl.find().limit(2).skip(2) 

6)限定查询 条数据。 

db. myColl.find().limit(3) 

7)查询结果集的记录数。(查询 salary 小于 300 或大于 400 的个数) 

db. myColl.find({$or:[{salary:{$lt:300}},{salary:{$gt:400}}]}).count() 

8)查询指定列的数据。可以通过 find(或者 findOne)的第二个参数来指定想要的键, 

这样做既会节省传输的数据量,又能节省客户端解码文档的时间和内存消耗。 

查询 myColl 集合中,'age'列和'salary'列。 

db.mycollection.find({},{age:1,salary:1}) 

表示显示此列的意思,也可以用 true 表示。 

9)按 salary 升序排序。(将 换成-1 就是降序排序) 

db. myColl.find().sort({salary:1}) 

10)查询 username 列,并去掉重复数据。 

db. myColl.distinct('username') 

11)查询 age 等于 13 的数据。 

db. myColl.find({'age':13}) 

12)查询 age 小于 13 的数据。 

db. myColl.find({age:{$lt:13}}) 

13)查询 age 大于 15 的数据。 

db. myColl.find({age:{$gt:15}}) 

14)查询 age 不等于 13 的数据。 

db. myColl.find({'age':{$ne:13}}) 

MongoDB AND 条件 

MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开。语法格式如下: 

db.col.find({key1:value1, key2:value2}) 

15)查询 age 等于 20salary 等于 200 的数据。 

db. myColl.find({'age':20,'salary':200}) 

16)查询 age 小于 13salary 大于等于 200 的数据。 

db. myColl.find({$and:[{age:{$lt:13}},{salary:{$gte:200}}]}) 

17MongoDB OR 条件 

MongoDB OR 条件语句使用了关键字 $or,语法格式如下: 

db.col.find( { $or: [ {key1: value1}, {key2:value2} ] } ) 

18)查询 salary 大于 300 或 age 小于等于 13 的数据。 

db. myColl.find({$or:[{salary:{$gt:300}},{age:{$lte:13}}]}) 

19AND 和 OR 联合使用。 

查询 salary 大于等于 300 时,username 'banma'或者 age 为 的数据,类似的常规 SQL 

语句为:where salary>=300 and (username = 'banma' or age = 8) 

db. myColl.find({'salary': {$gte:300}, $or: [{'username': 'banma'},{'age': 8}]}) 

20ongoDB $type 操作符 

$type 操作符是基于 BSON 类型来检索集合中匹配的数据类型,并返回结果。 

MongoDB 中可以使用的类型如下表所示: 

获取 myColl 集合中 username 为 String 类型的数据。 

21MongoDB 正则表达式 

正则表达式是使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。 

查询 username 中包含‘m’的数据。

db. myColl.find({username:/m/}) 

22)查询以 开头的数据。 

题目四 使用游标和 printjson 输出 testdb 数据库 c3 集合中所有结果集。 

var cursor = db.c3.find() 

while(cursor.hasNext()){printjson(cursor.next())} 

题目五 MongoDB python 编程。 

(1) python 编程访问 MongoDB 中的 mytest 数据库,判断集合 employs 是否 

存在,如果 employs 存在,输出集合已存在!,否则输出集合不存在!” 

import pymongo 

myclient = pymongo.MongoClient('mongodb://192.168.126.140:27017/') 

mydb = myclient["testdb"] 

collist = mydb.list_collection_names() 

if "employs" in collist: 

print("集合已存在!") 

else: 

print("集合不存在!") 

(2)Python 编程修改 testdb 数据库中 sales 集合中“_id”为 的文档中 price 键 

的值修改为 20,并打印出该条文档。 

import pymongo 

myclient = pymongo.MongoClient("mongodb://192.168.126.140:27017/") 

mydb = myclient["testdb"] 

mycol = mydb["sales"] 

myquery = { "_id": 3 } 

newvalues = { "$set": { "price": 20 } } 

mycol.update_one(myquery, newvalues) 

for x in mycol.find({"_id":3}): 

print(x) 

思考题:MongoDB 集群安装模式有哪些?各有什么特点? 

小结 

掌握 MongoDB 数据库的基本概念,掌握 MongoDB 创建数据库,掌握 MongoDB 删除 

数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/288257.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

泛微OA移动端增加通知公告应用

1、集成中心-移动配置应用中心-移动平台应用管理-新建 应用设置: 2、集成中心-移动配置应用中心-应用入口页面管理-默认页面

ansible远程操作主机功能(2)

command模块 一般用于执行Linux的命令,不支持管道符和重定向。 2,shell模块相当于command的升级版,也可以执行Linux命令。支持管道符和重定向 3,Cron在远程主机生成定时任务 分 时 日 月 周 Minute hour day month …

【网络安全】—Shell编程入门(1)

文章目录 基础变量概念介绍特殊变量进阶数值计算实践条件测试比较条件判断语句流程控制语句循环语句应用 Shell 是 Unix/Linux 操作系统下的一种命令行解释器,它接收用户输入的命令然后调用相应的程序。我们可以通过 Shell 脚本来自动执行一系列的命令。接下来&…

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘

20231218在微软官网下载WINDOWS10以及通过rufus-4.3p写入U盘作为安装盘 2023/12/18 17:06 百度搜索:下载 windows10 https://www.microsoft.com/zh-cn/software-download/windows10 下载 Windows 10 更新之前,请参阅 Windows 版本信息状态中的已知问题&a…

这5个A 视频生成工具你需要了解

任何人都可以很快成为下一个斯科塞斯或斯皮尔伯格,而无需任何电影制作经验。 这是许多人工智能视频生成工具背后的公司做出的承诺。但如今这些文本转视频工具有多好呢?他们是否有足够的能力制作一部高质量、成熟的电影? 在本文中&#xff0…

100GPTS计划-AI写作VersatileWriter

地址 https://chat.openai.com/g/g-zHErU9z9m-versatile-writer https://poe.com/VersatileWriterGPT 测试 翻译:要求将给定的英语语句翻译成中文。 总结:给出一段文本,要求进行概括和总结。 问答:根据给定段落,提出相关问题并给出答案。 推理:给出前提,进行多步推理并得…

鸿蒙 - arkTs:渲染(循环 - ForEach,判断 - if)

ForEach循环渲染: 参数: 要循环遍历的数组,Array类型遍历的回调方法,Function类型为每一项生成唯一标识符的方法,有默认生成方法,非必传 使用示例: interface Item {name: String,price: N…

设计模式(三)-结构型模式(3)-装饰模式

一、为何需要装饰模式(Decorator)? 在软件设计中,某个对象会组合很多不同的功能,如果把所有功能都写在这个对象所在的类里,该类会包含很多复杂的代码逻辑,导致代码不美观且难以维护。于是就有了再定义一些…

AWS 知识二:AWS同一个VPC下的ubuntu实例通过ldapsearch命令查询目录用户信息

前言: 前提:需要完成我的AWS 知识一创建一个成功运行的目录。 主要两个重要:1.本地windows如何通过SSH的方式连接到Ubuntu实例 2.ldapsearch命令的构成 一 ,启动一个新的Ubuntu实例 1.创建一个ubuntu实例 具体创建实例步骤我就不…

Linux 进程通信

文章目录 匿名管道匿名管道使用匿名管道原理匿名管道读写 命名管道命名管道使用命名管道特性 共享内存共享内存原理共享内存使用 补充说明 补充说明部分为相关函数和不太重要的概念介绍 匿名管道 匿名管道使用 使用方法一: 使用函数介绍: #include &…

Redis介绍与使用

1、Nosql 1.1 数据存储的发展 1.1.1 只使用Mysql 以前的网站访问量不大,单个数据库是完全够用的。 但是随着互联网的发展,就出现了很多的问题: 数据量太大,服务器放不下 访问量太大,服务器也承受不了 1.1.2 缓存…

LLM 和搜索引擎是一样的吗?

在这篇文章中,了解更多关于 AI 大型语言模型(如 ChatGPT)的潜力。了解他们如何彻底改变生产力,并探索他们与搜索引擎不断变化的关系。 像 ChatGPT 这样的 AI 大型语言模型 (LLM) 已经风靡全球,并…