爬虫之存储数据库mongodb

关系型数据库与mongodb的对比:

database			database			数据库
table				collection			数据库表/集合
row					document		数据库记录行/文档
column				field					列/字段

关于数据库的相关命令

db
#查看当前数据库名称

show dbs
#查看当前数据库的名称,物理意义上存在的数据库

use 数据库名字
#切换数据库
#如果切换的数据库不存在也不会直接进行创建,只有数据库中插入数据了,才算真正的创建成功。

db.dropDatabase()
#删除当前数据库,但是如果数据库不存在,不会做任何操作

数据库集合的相关命令

db.createCollection(集合名)

show collections

db.集合名.drop

数据库支持的数据类型

objectID    文档的ID
string 		字符串,最常用的
boolean		布尔值,true false
integer		整数
double		浮点数
arrays		数组或者列表,将多个值对应存储到一条数据
object		用于存储的文档
null		存储null
timestamp 	时间戳
date		存储当前时间的

插入数据

db.集合名称.insert()
注意点:
1、集合的名称可以不创建,因为使用的过程中,直接创建
2、insert()如果id重名,不能插入数据,id是objectid
标注的是唯一的物理位置
3、插入数据的过程中,id可以不指定,由MongoDB直接分配唯一值,id的值也可以自己指定,但是命名要写下划线

更新数据

db.集合名称.update(
查询条件{定位到指定的数据,where},
更新操作,
是否将符合条件的数据全部更新
)
参数1:query    查询条件,类似mysql中的where,起到定位筛选的作用
参数2:update   更新的数据以及更新操作符
参数3:multi    默认值是false,表示只更新符合条件的第一条数据,如果想多条符合条件的数据,需要设置成true
全文档更新

删除数据

db.集合名.remove(
筛选条件,
{
justOne:false
}
)
注意点:
1、justOne这个参数,默认值是false,默认删除多条数据,如果希望删除一条数据,就将它设置为true
2、删除全部内容:db.集合名.remove({})

查询数据
find()

db.集合名.find(查询条件) #查找所有数据
db.集合名.find(查询条件).pretty() #pretty是格式化数据

findOne()

db.集合名.findOne() #查询符合条件的第一条数据,展示出来

比较运算符

等于   		{字段:数值}
不等于		{字段:{$ne:}}
大于		{字段:{$gt:}}
大于等于	{字段:{$gte:}}
小于		{字段:{$lt:}}
小于等于	{字段:{$lte:}}

逻辑运算符

db.films.find(
	{$or:
	[{actor:'张国荣'},{name:'花木兰'},{age:{$gt:18}}],
	name:'张一毛'
	}
)
and 是默认值  
not 是等于条件外面再嵌套一层$not

支持正则

db.films.find({name:{$regex:'^张'}})
db.films.find({name:/^/})

范围查找

db.films.find({$or:[{age:18},{age:20}]})
db.films.find({age:{$in:[18,20]}}) #查找这个两个值
db.films.find({age:{$nin:[18,20]}}) #不在这个范围查找
db.films.find({age:{$gt:18,$lt:28}})#想当于between

投影

类似mysql select 字段1,自断2.....from表名
注意点:
1、在find()函数中,第二个参数是表示需要展示的字段
2、如果需要展示,将这个字段的值设置为1,不设置则代表的是不显示
3、_id默认是显示的,如果需要不展示,需要设置为_id:0

统计个数

db.films.find().count()
db.films.find({age:{$gt:18}}).count()
db.films.count()
db.films.count({age:{$gt:18}})
注意点:
1、db.集合名.count({条件})
2、db.集合名.find().count()

指定读取的文档的数目和位置

db.films.find().limit(4)
db.films.find().limit()
db.films.find).skip(2)
注意点:
1、limit的参数如果不写,说明展示的是当前结合中所有的文档
2、limit的参数指定,说明需要展示的具体数目
3、skip表示的是越过多少条数目,默认是0

聚合函数

db.films.distinct('name')
db.films.distinct('name',{age:{$gr:18}})
注意点:
1、第一个是去重的的字段名
2、第二个参数是筛选条件

#得到男女性别各有多少人以及平均年龄
db.actors.aggregate([{$group:{_id:'$gender',count:{$sum:1},avgage:{$avg:'$age'}}}])


查询年龄大于16岁人员中,男生和女生的个数
db.actors.aggregate([{$match:{age:{$gt:16}}},{$group:{_id:'$gender',count:{$sum:1}}}])

mongodb的索引

db.collection.explain()  #查询性能分析
db.actors.getIndexes()  查看当前索引

db.actors.dropIndexes() #删除所有索引
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值