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是降序