每天30分钟 一起来学习爬虫——day13(数据存储 之 MongoDB基础操作)


什么是MongoDB

MongoDB是一种面向文档的数据库管理系统,在开始今天的学习之前,先来看看数据库的分类

数据库的分类:

  1. 关系型数据库
    • MySQL、Oracle、DB2、SQL Server
    • 关系数据库中全都是表
  2. 非关系型数据库
    • MongoDB、Redis
    • 键值对数据库,这个就和爬虫关系了
    • 文档数据库 MongoDB

这个了解一下,我们后面还要学习其他的数据库,那么我们为什么要学习这个东西呢,

安装MongoDB

直接给出官网链接:MongoDB
如果官网上不去没关系啊,直接去菜鸟教程:菜鸟教程里面有详细的安装说明

但是:
如果我们不想安装到C盘,想安装到系统盘,那就贼麻烦,每个电脑都有不同的问题,解决方法也不大相同,这里我 windows 系统,是安装到D盘的 ,如果小伙伴系统和我一样,可以看看我的折腾记录,或者直接选择按菜鸟教程的步骤,安装,实在不行,B站也可以参考,反正,,我安装了一早上才弄好,太憨了(哭哭

开始一切正常,NEXT 就完事了,

一路next过后,我的D盘根目录下出现了MongoDB
在这里插入图片描述

打开找到 bin 目录,然后添加到环境变量,这个相信大家都会,我就放一个我的图

在这里插入图片描述

按照网上的教程,这个时候打开cmd 输入mongod 就出来好多东西如图

在这里插入图片描述
仔细看他有个dbpath 是C盘根目录下的,这就很麻烦,所以我们要改启动文件
首先,先在MongoDB刚才的文件夹里新建一个data ,然后再data里再新建两个 分别是 db 和 log

在这里插入图片描述
在这里插入图片描述

建好了以后我们可以更改我们这个启动文件了,在bin目录下找到 .cfg 的文件,然后看图,他上面还有一个 dbpath 也改到自己的路径里,就是MongoDB下的data里的db文件夹,那个截不到了,对应改一下就好,和下面这个差不多。

在这里插入图片描述

然后就是设置启动服务了,以管理员身份打开cmd,输入:mongod --dbpath=D:\MongoDB\data\db --logpath=D:\MongoDB\data\log\mongodb.log --install --serviceName "MongoDB" 然后回车,如图: 注意:这个都是按我的路径写的,如果不一样还要改一改,回车后出现下面这个就成功了。
在这里插入图片描述

当然,你可能需要把之前的服务删了,看图:我第二次删失败了,是因为没有这个服务,有的话就是第一个的样子,删了以后,再按上面的方法添加服务

在这里插入图片描述
我们这样启动服务 net start MongoDB ,如果失败了,就再来一次

在这里插入图片描述

然后打开127.0.0.1:27017,出现图中的样子,就好了

在这里插入图片描述但是,每次开机都启动服务有点麻烦,我们可以把服务改为自动的那种,看图:

在这里插入图片描述

在这里插入图片描述

这样以后就完美了。然后我们可以直接在cmd中输入 mongo 启动了

在这里插入图片描述
如果没有启动没关系,可能需要重启电脑之类的,我们可以去刚才的bin 目录双击执行 mongo.exe 文件就可以,总之只要服务起来,可以连接到 127.0.0.1:27017 就好。双击执行就是这样: 其实没有什么区别

在这里插入图片描述
安装就说这么多吧,反正不在系统盘挺折腾人的,如果伙伴们还是有问题,可以再看看其他博客,视频,或者私聊我也可以,总之要细心,路径要对。

对MongoDB的操作

1.基本指令

在后面的操作中,我会使用一个叫做 tes 的数据库,在里面建立 students 集合,并在其中插入数据

show dbs   //显示当前所有数据库
use test //进入stus数据库
db  //显示当前所处的数据库
show collections //显示数据库中集合

在这里插入图片描述

其实,数据库是不用手动建立的,当他里面有了数据,有了集合和文档的时候,就会自动建立

数据库的CEUD操作

就是增删查改

1.增加数据
# 注意啊,我们现在还在test数据库中,下面我们进行操作 
db.stus.insert({name:"小明",age:18,gender:"男"}) # 这样就插入了一个
db.stus.insert([
	{name:"小华",age:12,gender:"男"}, 
	{name:"小明",age:14,gender:"男"},
	{name:"小红",age:19,gender:"男"},
	{name:"小蓝",age:19,gender:"男"},
	{name:"小花",age:13,gender:"男"}
]) #写一个集合,里面放要插入的文档就可以插入多个

这里先说一下,在我们插入数据的时候,Mongodb会自己生成一个对象的id,当然我们也可以自己定义,但是注意,这个id就好像人的身份证,不能重复

db.stus.insert({_id:"1",name:"老李",age:34,gender:"男"})

除了用insert, 还有 
db.stus.insertOne(doc)   插入一个
db.stus.insertMany(doc)  插入多个
还是一样的传入文档,其实insert就是这俩个给的合体

在这里插入图片描述

2、查询数据

一会看图,就会看到我们设置的id。

db.stus.find() //这个查询所有的数据
db.stus.find({name:"小明"})
db.stus.find({age:19})//括号里面传入条件对象,查询指定条件的数据,返回的是个对象集合

在这里插入图片描述

db.stus.findOne({_id:"1"}) //查找符合条件的第一个文档返回的是文档对象
db.stus.find().count() //查询一共有多少数据
//对一个文档对象,加点可以查询属性值
db.stus.findOne({name:"小明"}).age //前面返回的是文档对象,.age 查询其age属性

在这里插入图片描述

查年龄大于20
db.stus.find({age:{$gt:20}})
大于等于30
db.stus.find({age:{$gte:30}})
小于14
db.stus.find({age:{$lt:14}})
小于等于 14
db.stus.find({age:{$lte:14}})
不等于 19
db.stus.find({age:{$ne:19}})
等于 18
db.stus.find({age:{$eq:18}})

注意格式不要乱,括号不要少

在这里插入图片描述

查看前3条数据
db.numbers.find().limit(3)
查看4-7条数据
db.numbers.find().skip(3).limit(4)
skip()事实是跳过了3条数据,然后找4条

在这里插入图片描述

查询年龄小于14或大于20的
db.stus.find({$or:[{age:{$lt:14}},{age:{$gt:20}}]})

查询年龄小于14同时性别是男的。
db.stus.find({$and:[{age:{$lt:14}},{gender:"男"}]})

在这里插入图片描述

db.stus.find().pretty() # 格式化输出,就好看
# 查询出的数据默认按id排序,我们也可以指定排序方式
db.stus.find({}).sort({age:1})
#给sort里传一个对象,1是升序,-1是降序

# 如果查询后只想看其中的几个数据,可以在第二个参数的位置设置查询结果的 投影
db.stus.find({},{age:1,_id:0,name:1})
# 1 是显示 0 是不显示,默认_id 显示,

# 查询在某个范围的数据
db.stus.find({age:{$in:[14,18,24]}})
# 不在范围就$nin

在这里插入图片描述

正则表达式查询:
db.stus.find({name:/李/})
db.stus.find({name:"^李"})
db.stus.find({name:/a/i}) 
db.stus.find({name:{$regex:"a",$options:"i"}})
# 加i 忽略大小写

在这里插入图片描述

3.修改数据
# 默认用新对象直接替换旧对象,而不是修改旧对象的对应属性值,默认只修改第一个,
db.stus.update({_id:"1"},{age:15})

在这里插入图片描述

当然我们可以只修改对应的值,默认修改一个,
db.stus.update({name:"小花"},{$set:{age:15,gender:"女"}}) 
db.stus.update({age:19},{$set:{gender:"女"}})

我们可以用updateMany来修改多个
我们还可以通过unset来删除某个属性

在这里插入图片描述

db.stus.update({name:"小华"},{$push:{like:"ll"}})
# 用来向数组中添加,但是不管是否重复,同样的,pop就是删除其中一个,如果该数组不存在就新建一个
db.stus.update({name:"小华"},{$addToSet:{like:"ll"}})
# 这个时不重复的添加,有了就不加了

在这里插入图片描述

为所有年龄低于17的加4岁
$inc 数据在原有基础上增加
db.stus.updateMany({age:{$lte:17}},{$inc:{age:4}})

在这里插入图片描述

4、删除数据
db.stus.remove() # 默认删除多个,
#同样括号里传入对象,和find传入方法相同,
#注意find不传对象可以,但是remove必须传入对象,如果传入空对象,则删除所有

#如果删多个第一个传条件, 第二个true表示只删除一个,
db.stus.remove({},true)
db.stus.deletOne()删一个
db.stus.deletMany()删多个

删除集合
db.<collection>.drop()
如:db.stus.drop()

删除数据库
db.dropDatabase()

在这里插入图片描述
在这里插入图片描述

对Mongodb的基础操作就说这么多把,还有更多操作可以去看看官方文档。今天没有实例,只是学一下 MongoDB的基础操作,明天,害,继续学习MongoDB,看看 mongo和爬虫的交互



我又来要赞了,如果觉得讲的还算详细,点个赞再走吧,欢迎各位大佬评论指出问题,如果有什么问题也欢迎评论,私聊。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值