mongodb的操作及使用
安装
Windows安装
下载地址 :www.mongodb.com
下载完成之后一顿下一步即可安装。
Linux安装
安装方法
百度之很多,我使用的是Docker进行安装的,简单。
基本操作
- 配置远程及设置密码
- 修改配置文件mongodb.conf中bind_ip将127.0.0.1改成0.0.0.0
- ```
- security:
authorization: disabled ->改为enabledb.createUser({user:’username’,pwd:’pwd’,roles:[‘readWrite’,db:’admin’]})1
- 添加管理员
db.createUser({user:’admin’, pwd:’admin’, roles: [{ role: “userAdminAnyDatabase”, db: “admin” }]})docker pull mongo1
2
3- Docker安装
- 安装方法
pull最新版本mongpdocker run –name mongodb -v ~/docker/mongo:/data/db -p 27017:27017 -d mongo1
运行 `--name`设置名称 `-v`挂载数据 `-p`端口映射 `-d`后台运行
docker exec -it mongodb bash1
设置用户进入`mongodb`容器进行设置
mongo进入 admin 的数据库
use admin创建管理员用户
db.createUser(
{
user: “admin”,
pwd: “pwd”,
roles: [ { role: “userAdminAnyDatabase”, db: “admin” } ]
}
)创建有可读写权限的用户. 对于一个特定的数据库, 比如’demo’
db.createUser({
user: ‘username’,
pwd: ‘pwd’,
roles: [{role: “readWrite”, db: “demo”}]
})#更新源1
2
3- 远程访问
在 `mongodb` 的容器当中操作修改`bindIP`
apt-get update安装 vim
apt-get install vim修改 mongo 配置文件
vim /etc/mongod.conf.orig修改bindIP为0.0.0.0
bindIp: 0.0.0.01
2
3
4
5
6
7#### pymongo操作
- 增
```python
#插入一条数据
insert_one()
#插入多条数据
insert_many
- security:
- 配置远程及设置密码
删
1
2
3
4
5
6#删除单条
delete_one({查询条件})
#删除多条
delete_many({查询条件})
#删除说有
delete_many({})改
1
update_many({查询}, { "$set": { 修改 } }) 或 update_one({查询}, { "$set": { 修改 } })
查
1
2
3
4
5
6
7
8
9#查询多条数据
find()
#查询一条数据
find_one()
#查询指定字段
find({},{ "_id": 0, "name": 1, "alexa": 1 })
`0`为不显示,`1`为显示
#查询条件
find({ "name": 条件 }) 或 find_one({ "name": 条件 })fastapi+mongodb线报爬虫案例
爬取及去重
1
2
3
4
5
6
7
8
9
10
11
12#科学刀最新线报
def spider_kxd(self):
site = '科学刀'
soup = Spider(kxd_api).soup
for soup_a in soup.xpath('//a[@class="s xst"]'):
title = soup_a.text
link = soup_a.get('href')
msg = { "title": title, "link": link, "site": site ,"pubtime":int(time.time())}
q = mycol.find_one({ "link": link })
if q == None:
mycol.insert_one(msg)
print(title,'采集成功!')通过
mycol.find_one({ "link": link })
查询爬取地址是否已在数据库中,为空则进行爬取。fastapi
1
2
3
4
5
6
7
8
def index(request: Request):
p = mycol.find().sort([("pubtime",-1)]).limit(20)
data = []
for i in p:
msg = {'title':i['title'],'link':i['link']}
data.append(msg)
return data通过
sort
进行排序(1
为正序,-1
为倒序),limit
截取显示数量。