菜鸟博客
菜鸟站长

【python爬虫学习笔记】MongoDB学习笔记

MongoDB安装过程中的几个命令

启动命令

net start MongoDB

安装命令,会生成MongoDB的服务

mongod –dbpath “D:\MongoDB\data\db” –logpath “D:\MongoDB\data\log\mongo.log” -install -serviceName “MongoDB”

pip安装pymongo失败时,换成国内的源

pip install pymongo -i http://pypi.douban.com/simple/ –trusted-host pypi.douban.com

MongoDB使用方法

插入数据

import pymongo

#指定数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
#指定数据库
client = pymongo.MongoClient(host='localhost', port=27017)
#指定操作数据库
db = client.test
#指定操作数据库
db = client['test']
#MongoDB 的每个数据库包含许多集合(collection),它们类似于关系型数据库中的表
#指定要操作的集合
collection = db.students
#指定要操作的集合
collection = db['students']
#创建两条字典数据
student1 = {
    'id': '20170101',
    'name': 'Jordan',
    'age': 20,
    'gender': 'male'
}

student2 = {
    'id': '20170202',
    'name': 'Mike',
    'age': 21,
    'gender': 'male'
}
#插入到数据库中
result = collection.insert([student1, student2])
print(result)
#官方推荐使用 insert_one 和 insert_many 方法来分别插入单条记录和多条记录
#insert_one 插入一条数据
result = collection.insert_one(student1)
print(result)
#调用其 inserted_id 属性获取_id
print(result.inserted_id)
#insert_many 插入多条数据
result = collection.insert_many([student1, student2])
print(result)
#调用 inserted_ids 属性可以获取插入数据的 _id 列表
print(result.inserted_ids)

查询数据

import pymongo

#查询单个数据,查询name为Mike的数据
result = collection.find_one({'name': 'Mike'})
print(type(result))
print(result)

#根据ObjectId来查询数据
#需要调用 bson 库里面的 objectid
from bson.objectid import ObjectId

result = collection.find_one({'_id': ObjectId('593278c115c2602667ec6bae')})
print(result)

#查询多条数据
results = collection.find({'age': 20})
print(results)
for result in results:
    print(result)

#查询年龄大于20的数据
results = collection.find({'age': {'$gt': 20}})

#正则匹配查询。查询名字以 M 开头的数据
results = collection.find({'name': {'$regex': '^M.*'}})

常用比较符号

常用功能符号

更详细的用法,查看官方文档
https://docs.mongodb.com/manual/reference/operator/query/

计数

import pymongo

#统计总数
count = collection.find().count()
print(count)

#统计符合条件的总数
count = collection.find({'age': 20}).count()
print(count)

排序

import pymongo

#调用 sort 方法。pymongo.ASCENDING 指定升序。pymongo.DESCENDING 降序
results = collection.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])

偏移

import pymongo

#得到第 3 个及以后的元素,使用 skip 方法
results = collection.find().sort('name', pymongo.ASCENDING).skip(2)
print([result['name'] for result in results])

#使用 limit 方法,获取指定数量的数据
results = collection.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
print([result['name'] for result in results])

更新

import pymongo

condition = {'name': 'Kevin'}
#先查找 name 为 Kevin 的数据
student = collection.find_one(condition)
student['age'] = 25
#然后更新其年龄为25
result = collection.update(condition, student)
print(result)

#使用 $set 操作符对数据进行更新
result = collection.update(condition, {'$set': student})

#注意事项:使用 $set 操作符只更新 student 字典内存在的字段。不使用 $set ,会把之前的数据全部用 student 字典替换,其他字段会被删除。

#同 insert 一样,官方建议单个和多个更新分开使用不同的方法

condition = {'name': 'Kevin'}
student = collection.find_one(condition)
student['age'] = 26
# update_one 方法,第二个参数必须使用 $ 类型操作符作为字典的键名
result = collection.update_one(condition, {'$set': student})
print(result)
#matched_count 和 modified_count 属性,可以获得匹配的数据条数和影响的数据条数
print(result.matched_count, result.modified_count)

#查找年龄大于20的数据
condition = {'age': {'$gt': 20}}
#将符合条件的第一条数据年龄加一
result = collection.update_one(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

#查找年龄大于20的数据
condition = {'age': {'$gt': 20}}
#将符合条件的所有数据年龄加一
result = collection.update_many(condition, {'$inc': {'age': 1}})
print(result)
print(result.matched_count, result.modified_count)

删除

import pymongo


result = collection.remove({'name': 'Kevin'})
print(result)

#推荐方法
#删除单个
result = collection.delete_one({'name': 'Kevin'})
print(result)
print(result.deleted_count)
#删除所有符合条件的
result = collection.delete_many({'age': {'$lt': 25}})
print(result.deleted_count)

官方文档:http://api.mongodb.com/python/current/api/pymongo/

赞(0)
未经允许不得转载:不吃香菜 » 【python爬虫学习笔记】MongoDB学习笔记

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址