python爬虫笔记-day5

mongodb插入数据
db.collecion.insert({}) 插入数据,_id存在就报错 
db.collection.save({}) 插入数据,_id存在会更新

mongodb的更新操作
db.test1000.update({name:"xiaowang"},{name:"xiaozhao"})
把name为xiaowang的数据替换为{name:"xiaozhao"}
db.test1000.update({name:"xiaohong"},{$set:{name:"xiaozhang"}})
把name为xiaowang的数据name的值更新为xiaozhang
db.test1000.update({name:"xiaozhang"},{$set:{name:"xiaohong"}},{multi:true})
{multi:true}达到更新多条的目的

mongodb删除
db.test1000.remove({name:"xiaohong"},{justOne:true})
默认情况会删除所有满足条件的数据,{justOne:true}能达到只删除一条的效果

mongodb的count方法
db.collection.find({条件}).count()
db.collection.count({})

mongodb的投影
投影:选择返回结果的字段
db.collection.find({条件},{name:1,_id:0})
1._id默认会显示,置为0不显示
2.出了_id之外的其他字段,如果不显示,不写,不能写为0

$group的注意点
$group对应的字典中有几个键,结果中就有几个键
分组依据需要放到_id后面
取不同的字段的值需要使用gender,$age`
取字典嵌套的字典中的值的时候$_id.country
能够同时按照多个键进行分组{$group:{_id:{country:"$country",province:"$province"}}}
结果是:{_id:{country:"",province:""}

编辑器写mongodb语句

db.stu.find(
{$or:[{age:{$gte:20}},{hometown:{$in:["桃花岛","华⼭"]}}]}
)

#按照gender进行分组,获取不同组数据的个数和平均年龄
db.stu.aggregate(
{$group:{_id:"$gender",count:{$sum:1},avg_age:{$avg:"$age"}}},
{$project:{gender:"$_id",count:1,avg_age:"$avg_age",_id:0}}
)

按照hometown进行分组,获取不同组的平均年龄

db.stu.aggregate(
{$group:{_id:"$hometown",mean_age:{$avg:"$age"}}}
)
#使用$group统计整个文档
db.stu.aggregate(
{$group:{_id:null,count:{$sum:1},mean_age:{$avg:"$age"}}}
)
#选择年龄大于20的学生,观察男性和女性有多少人
db.stu.aggregate(
{$match:{$or:[{age:{$gt:20}},{hometown:{$in:["蒙古","⼤理"]}}]}},
{$group:{_id:"$gender",count:{$sum:1}}},
{$project:{_id:0,gender:"$_id",count:1}}
)

#page37页练习
db.tv3.aggregate(
{$group:{_id:{country:"$country",province:"$province",userid:"$userid"}}},
{$group:{_id:{country:"$_id.country",province:"$_id.province"},count:{$sum:1}}},
{$project:{country:"$_id.country",province:"$_id.province",count:1,_id:0}}
)

你可能感兴趣的:(Python)