Python爬虫——MongoDB入门到精通(二)

Python爬虫——MongoDB入门到精通(二)



MongoDB使用详情

一、MongoDB的基本使用

代码主要作用
show dbs查看数据库 一般是用来查看磁盘上面的数据库的
use admin切换数据库 如果切换的数据库是不存在的 创建并且切换
db返回当前所操作的数据库
db.dropDatabase()删除当前所处数据库
show tables/collections查看集合

命令提示:按tab

mongodb中文社区:https://docs.mongoing.com/mongo‐introduction

二、MongoDB创建集合

非手动创建集合的方式
手动创建集合 name 集合名字是必须要传的
除此之外 还有一些可选参数:

参数主要作用
capped是否启用集合内存限制 默认false不启动 true开启
size限制集合所使用的空间大小的 当文档到达上限的时候 会把之前的数 据覆盖
autoIndexId是否使用_id为索引的 很多版本都已经被弃用了
max集合中所允许的最大存储文档数

总结

1、需要先切换到具体的数据库 use xxx

2、db.user.insert({}) 直接往一个不存在的集合中插入数据 会默认创建 这个集合(非手动的)

手动创建集合 集合名字必须要穿 可选参数能够限制创建的集合大小

_id的组成

{ "_id" : ObjectId("6256d50ec8b518f23628afa7"),"name" : "python" } 

是一个12字节的十六进制
4( 当前的时间戳) + 3 (机器ID)+ 2(MongoDB中的进程ID ) + 3 (简单的增量值)

三、插入数据

db.xxx.insert({}) 

如何往集合中插入多条数据:
1、循环

2、insert 既支持插入一条数据 也支持一次性插入多条

3、insertMany([{}, {}, {}])

insertMany和insert在插入多条数据的返回值会不同 insertOne() 插入一条数据的

四、保存数据

db.stu.save({})

保存和插入的区别:
不能往集合中插入重复的id文档
但是可以保存重复id的文档 并且会覆盖之前的数据

五、查询数据

1.删除集合
stu: db.stu.drop()

2.条件查询
如何带有条件的进行查询:
查询名字为张三的文档:db.stu.find({name: "张三"})
查询年龄为18并且家乡在北京的:db.stu.find({age: 18, hometown: "北京"})
映射:db.stu.find({age: 18}, {hometown: 1})

3.比较运算符
lt less than 小于
gt greater than 大于
gte greater than equal 大于等于
lte less than equal 小于等于
ne not equal 不等于
eq equal 等于

查询年龄大于18的: db.stu.find({age: {$gt: 18}})

大于18:
{$gt: 18}
db.stu.find({age: {$gt: 18}})

大于20呢:
db.stu.find({age: {$gt: 20}})

小于20:
db.stu.find({age: {$lt: 20}})

等于:
db.stu.find({age: {$eq: 20}})
db.stu.find({age: 20})

4.范围运算符
查询年龄为18和40的记录:
db.stu.find({age: {$in: [18, 40]}})

查询年龄不是16和40的记录:
db.stu.find({age: {$nin: [16, 40]}})

查询年龄大于18并且小于40的记录:
db.stu.find({age: {$gt: 18, $lt: 40}})
db.stu.find({age: {$gte: 18, $lte: 40}})

in是用来指定具体某几个值的
{age: {$gt: 18, $lt: 40}}

是用来指定某个范围区间的

5.逻辑运算符
查询年龄为18 或者 gender为false的:

db.stu.find({$or: [{age: 18}, {gender: false}]})

查询年龄为18 并且 gender为false的:
db.stu.find({$and: [{age: 18}, {gender: false}]})
db.stu.find({age: 18, gender: false})

总结

db.stu.find() # 返回集合中的所有记录 db.stu.find().pretty() 把查询结果格式化输出 db.stu.findOne() # 返回第一条记录

带有条件的查询:
1、原始条件查询
db.stu.find({name: "张三"})

2、比较运算符:
$gt, $lt ,$gte, $lte, $eq, $ne

3、范围运算符:
$in 指定具体的某几个值 这某几个值统一放列表中
$nin 指定某几个值以外的数据
{age: {$gt: 18, $lt: 40}} 指定某一个区间范围的

4、逻辑运算符:
$or: [{条件一}, {条件二}] 或者
$and: [{条件一}, {条件二}] 并且

5、自定义查询:涉及到js(仅作了解即可)

六、对查询结果操作

db.stu.find().limit(2) # 限制查询返回的最大结果数 db.stu.find().limit(2).skip(1) # skip控制跳过的数量的 db.stu.find().skip(1).limit(2) 输出结果相同,skip的优先级要高于limit 应用场景:翻页

映射:一般是用来控制字段显示的 db.stu.find({}, {name: 1, _id: 0}) find中的第一个{}里面放查询条件 第二个{}是映射 {name: 1, _id: 0} 1是显示 0是不显示

db.stu.find({}, {name: 1, _id: 0, age: 0}) 除了_id 其他域的0和1是不能同时存在的
排序:
sort()
1是升序 ‐1是降序

代码主要作用
db.stu.find().sort({})以默认的方式进行排序
db.stu.find().sort({age: 1})根据age对查询结果做升序排列
db.stu.find().help()更多帮助
db.stu.find().sort({age:1, _id: 1}) 

总结

1、limit() skip() 翻页

2、映射:控制查询结果输出的字段(域) 除了_id其他的0和1不能共存 1是 显示 0是不显示

3、排序:1是升序 ‐1是降序

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猩猩文学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值