爬虫(笔记04)/mogodb 数据库

一、mongodb 基本操作 与 在python中如何使用它存储数据

1.查看所有数据库

show dbs
admin 0.000GB
local 0.000GB
test 0.000GB

2.使用或创建该数据库

use test
switched to db test

3.查看当前所在数据库

db
test

  1. 在当前数据库创建一个集合(one),并插入数据

db.one.insert({‘name’:‘ls’})
WriteResult({ “nInserted” : 1 })

  1. 删除当前数据库

db.dropDatabase()
{ “dropped” : “p0610”, “ok” : 1 }
db.dropDatabase()
{ “ok” : 1 }

  1. 查看所有集合(类似sql里的表)

show collections或tables
one

  1. 创建集合

db.createCollection(‘python’)
{ “ok” : 1 }

  1. 查询所有集合

show collections
one
python

  1. 删除集合(python)

db.python.drop()
true

  1. 插入数据 insert({})

db.student.insert({‘name’:‘xiaolin’,‘age’:21,‘sex’:1})
WriteResult({ “nInserted” : 1 })
db.student.insert({‘name’:‘yuanlou’,‘age’:18,‘sex’:1})
WriteResult({ “nInserted” : 1 })
db.student.insert({‘name’:‘kuilai’,‘age’:28,‘sex’:1})
WriteResult({ “nInserted” : 1 })
db.student.insert({‘name’:‘jianmin’,‘age’:32,‘sex’:1})
WriteResult({ “nInserted” : 1 })

  1. 查询该(student)集合所有的文档 find({})

db.student.find()
{ “_id” : ObjectId(“5d8adc806b39e6fe2e26d359”), “name” : “xiaolin”, “age” : 21,
“sex” : 1 }
{ “_id” : ObjectId(“5d8adcc76b39e6fe2e26d35a”), “name” : “yuanlou”, “age” : 18,
“sex” : 1 }
{ “_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”), “name” : “kuilai”, “age” : 28, "
sex" : 1 }
{ “_id” : ObjectId(“5d8add296b39e6fe2e26d35c”), “name” : “jianmin”, “age” : 32,
“sex” : 1 }

12.删除文档

db.student.remove({条件}),如果只想删除1条数据,条件后面加上1或true

  1. 修改或插入新文档 update({查找条件},{修改或插入内容},false,false)

db.student.update({‘name’:‘jianmin’},{$set:{‘sex’:‘2’}},false,false)
----后面两个参数默认false,
第一个:表示找不到条件匹配出来的文档时是否插入插入一条新的文档
第二个:表示匹配到的文档是否全部修改,默认修改第一条
WriteResult({ “nMatched” : 1, “nUpserted” : 0, “nModified” : 1 })
{
“_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”),
“name” : “kuilai”,
“age” : 28,
“sex” : 1,
“girlfriend” : “快去找”,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8add296b39e6fe2e26d35c”),
“name” : “jianmin”,
“age” : 32,
“sex” : “2”
}
{
“_id” : ObjectId(“5d8b0b7e6b39e6fe2e26d35e”),
“name” : “renxiang”,
“age” : 24,
“sex” : 1,
“class” : “p0610”
}

db.student.update({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt:18}̲,'sex':1},{set:{‘class’:‘python0610’}},true
,true)
WriteResult({
“nMatched” : 0,
“nUpserted” : 1,
“nModified” : 0,
“_id” : ObjectId(“5d8b0f75dc5f2f916feca6cf”)
})
db.student.find().pretty()
{
“_id” : ObjectId(“5d8adc806b39e6fe2e26d359”),
“name” : “xiaolin”,
“age” : 21,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcc76b39e6fe2e26d35a”),
“name” : “yuanlou”,
“age” : 18,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”),
“name” : “kuilai”,
“age” : 28,
“sex” : 1,
“girlfriend” : “快去找”,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8add296b39e6fe2e26d35c”),
“name” : “jianmin”,
“age” : 32,
“sex” : “2”
}
{
“_id” : ObjectId(“5d8b0b7e6b39e6fe2e26d35e”),
“name” : “renxiang”,
“age” : 24,
“sex” : 1,
“class” : “p0610”
}
{
“_id” : ObjectId(“5d8b0f75dc5f2f916feca6cf”),
“sex” : 1,
“class” : “python0610”
}

db.student.update({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: lt:18}̲,'sex':1},{set:{‘class’:‘php0610’}},true,tru
e)
WriteResult({
“nMatched” : 0,
“nUpserted” : 1,
“nModified” : 0,
“_id” : ObjectId(“5d8b1089dc5f2f916feca724”)
})
db.student.find().pretty()
{
“_id” : ObjectId(“5d8adc806b39e6fe2e26d359”),
“name” : “xiaolin”,
“age” : 21,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcc76b39e6fe2e26d35a”),
“name” : “yuanlou”,
“age” : 18,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”),
“name” : “kuilai”,
“age” : 28,
“sex” : 1,
“girlfriend” : “快去找”,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8add296b39e6fe2e26d35c”),
“name” : “jianmin”,
“age” : 32,
“sex” : “2”
}
{
“_id” : ObjectId(“5d8b0b7e6b39e6fe2e26d35e”),
“name” : “renxiang”,
“age” : 24,
“sex” : 1,
“class” : “p0610”
}
{
“_id” : ObjectId(“5d8b0f75dc5f2f916feca6cf”),
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8b1089dc5f2f916feca724”),
“sex” : 1,
“class” : “php0610”
}

  1. gt等.比较运算符

db.student.update({‘age’:{KaTeX parse error: Expected 'EOF', got '}' at position 6: gt:68}̲,'sex':1},{set:{‘class’:‘python0610’}},true,
true)
WriteResult({
“nMatched” : 0,
“nUpserted” : 1,
“nModified” : 0,
“_id” : ObjectId(“5d8b1109dc5f2f916feca749”)
})
db.student.find().pretty()
{
“_id” : ObjectId(“5d8adc806b39e6fe2e26d359”),
“name” : “xiaolin”,
“age” : 21,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcc76b39e6fe2e26d35a”),
“name” : “yuanlou”,
“age” : 18,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”),
“name” : “kuilai”,
“age” : 28,
“sex” : 1,
“girlfriend” : “快去找”,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8add296b39e6fe2e26d35c”),
“name” : “jianmin”,
“age” : 32,
“sex” : “2”
}
{
“_id” : ObjectId(“5d8b0b7e6b39e6fe2e26d35e”),
“name” : “renxiang”,
“age” : 24,
“sex” : 1,
“class” : “p0610”
}
{
“_id” : ObjectId(“5d8b0f75dc5f2f916feca6cf”),
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8b1089dc5f2f916feca724”),
“sex” : 1,
“class” : “php0610”
}
{
“_id” : ObjectId(“5d8b1109dc5f2f916feca749”),
“sex” : 1,
“class” : “python0610”
}

  1. $or:[{条件1},{条件2}]

db.student.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: or:[{'age':{gte:18}},{‘year’:‘95’},{‘year’:‘2000’}],'salary
':{$gte:10000}})
{ “_id” : ObjectId(“5d8b1643d05d64fd2467820c”), “name” : “zihao”, “year” : “95”,
“salary” : 20000 }
{ “_id” : ObjectId(“5d8b166cd05d64fd2467820d”), “name” : “chaoyang”, “year” : “2
000”, “salary” : 12000 }

  1. find({ 条件 })

db.student.find({‘age’:{$gt:18}}).pretty()
{
“_id” : ObjectId(“5d8adc806b39e6fe2e26d359”),
“name” : “xiaolin”,
“age” : 21,
“sex” : 1,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8adcff6b39e6fe2e26d35b”),
“name” : “kuilai”,
“age” : 28,
“sex” : 1,
“girlfriend” : “快去找”,
“class” : “python0610”
}
{
“_id” : ObjectId(“5d8add296b39e6fe2e26d35c”),
“name” : “jianmin”,
“age” : 32,
“sex” : “2”
}
{
“_id” : ObjectId(“5d8b0b7e6b39e6fe2e26d35e”),
“name” : “renxiang”,
“age” : 24,
“sex” : 1,
“class” : “p0610”
}

  1. update({,},{}) 字典里的,号代表并且的意思

db.student.update({‘salary’:{KaTeX parse error: Expected 'EOF', got '}' at position 8: gt:8000}̲,'year':2000},{set:{‘sex’:0}},false,tru
e)
WriteResult({ “nMatched” : 0, “nUpserted” : 0, “nModified” : 0 })

  1. $type 实例
    如果想获取 “col” 集合中 title 为 String 的数据,你可以使用以下命令:

db.col.find({“title” : {$type : 2}})

  1. limit(),限定条数

db.student.find().limit(数量)

  1. skip()跳过第几条开始查询

db.student.find({},{“title”:1,_id:0}).limit(1).skip(1)
{ “title” : “Java 教程” }

  1. sort()

db.COLLECTION_NAME.find().sort({KEY:1})

在MongoDB中使用使用sort()方法对数据进行排序,
sort()方法可以通过参数指定排序的字段,
并使用 1 和 -1 来指定排序的方式,
其中 1 为升序排列,而-1是用于降序排列
  1. count(),条数

db.student.count()

  1. aggregate()
    聚合表达式:
    (1)$sum 【计算总和】
    例:
    db.col.aggregate( [ { $group : { _id : “name” , num : { KaTeX parse error: Expected 'EOF', got '}' at position 15: sum : "likes" }̲} } ] ) --根据 na…avg【计算平均值】
    例:
    db.col.aggregate( [ { $group : { _id : “name” , num : { a v g : " avg : " avg:"likes" }} } ] )’’
    –根据 name 分组 并求 likes 的平均值
    (3)$min【获取集合中所有文档对应值得最小值】
    例:
    db.col.aggregate( [ { $group : { _id : “name” , num : { m i n : " min : " min:"likes" }} } ] )’’
    –根据 name 分组 并求 likes 的最小值
    (4)$max【获取集合中所有文档对应值得最大值】
    例:
    db.col.aggregate( [ { $group : { _id : “name” , num : { KaTeX parse error: Expected 'EOF', got '}' at position 15: max : "likes" }̲} } ] )'' --根据…first【根据资源文档的排序获取第一个文档数据】
    db.col.aggregate( [ { $group : { _id : “name” , first_url : { f i r s t : " first : " first:"url" }} } ] )’’
    –根据 name 分组 并获取第一个数据
    (6)$last【根据资源文档的排序获取最后一个文档数据】
    例:
    db.col.aggregate( [ { $group : { _id : “name” , last_url : { l a s t : " last : " last:"url" }} } ] )’’
    –根据 name 分组 并获取最后一个数据

  2. python 中mongodb的使用:
    Python 访问 MongoDB
    对于使用 Python 访问 MongoDB,需要先安装 PyMongo 软件包,该包实现了 Python 的 MongoDB 驱动。
    通过以下命令建立工作环境,安装软件包:
    $ sudo pip install pymongo
    安装后使用 pip3 list查看是否存在pymongo
    创建脚本或使用命令行模式
    #链接到 127.0.0.1 的mongo
    client = pymongo.MongoClient(‘127.0.0.1’, 27017)
    #选择test库
    db = client.test
    #print(db)
    查询所有数据 db.test.find()
    for user in db.test.find():
    print(user)
    print(’
    ’)
    通过 PyMongo 插入数据也非常简单,直接通过 insert 方法:
    #定义数据
    data = {‘name’: ‘Aiden’, ‘age’: 30}
    #执行数据添加
    db.test.insert(data)

二、 思维导图

爬虫(笔记04)/mogodb 数据库_第1张图片

你可能感兴趣的:(爬虫(笔记04)/mogodb 数据库)