【大数据存储与处理】实验三 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 数据库操作_第1张图片

题目一:MongoDB 创建数据库 

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

use “DATABASE_NAME” 

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

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

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

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

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

Employee 数据库插入一些数据。 

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

库中。 

【大数据存储与处理】实验三 MongoDB 数据库操作_第2张图片

题目二:MongoDB 删除数据库 

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

db.dropDatabase() 

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

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

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

【大数据存储与处理】实验三 MongoDB 数据库操作_第3张图片

题目三:集合操作 

1. 创建集合的方法 

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

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

执行以下命令: 

db.createCollection("myCollection") 

【大数据存储与处理】实验三 MongoDB 数据库操作_第4张图片

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

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

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

【大数据存储与处理】实验三 MongoDB 数据库操作_第5张图片

相关操作: 

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}); 

【大数据存储与处理】实验三 MongoDB 数据库操作_第6张图片

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

db.myColl.count() 

3)查询第一条数据。 

db.myColl.findOne() 

注意,findOne 中的 要大写。 

【大数据存储与处理】实验三 MongoDB 数据库操作_第7张图片

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

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

【大数据存储与处理】实验三 MongoDB 数据库操作_第8张图片

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

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

6)限定查询 条数据。 

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

【大数据存储与处理】实验三 MongoDB 数据库操作_第9张图片

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}) 

【大数据存储与处理】实验三 MongoDB 数据库操作_第10张图片

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 数据库操作_第11张图片

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}}]}) 

【大数据存储与处理】实验三 MongoDB 数据库操作_第12张图片

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}]}) 

【大数据存储与处理】实验三 MongoDB 数据库操作_第13张图片

20ongoDB $type 操作符 

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

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

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

【大数据存储与处理】实验三 MongoDB 数据库操作_第14张图片

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("集合不存在!") 

【大数据存储与处理】实验三 MongoDB 数据库操作_第15张图片

(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 数据库操作_第16张图片

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

小结 

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

数据库。

你可能感兴趣的:(大数据,oracle,数据库)