Fork me on GitHub

MongoDB系列2-基本操作

MongoDB系列2-基本操作

介绍MongoDB的基本操作,包含以下几个方面,在爬虫中使用最多的是往MOngoDB中插入数据

  • 增:insert()
  • 查:find()
  • 逻辑查询
  • 结果排序-sort
  • 更新-update
  • 删除-delete
  • 去重-distinct

增加

插入操作使用的是insert,参数是Python的字典类型数据

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from pymongo import MongoClient
client = MongoClient()
database = client["Chapter6"] # Chapter6集合名字
collection = db1["spider"] # spider库的名字

# 单条插入
data = {"id":123,"name":"xiaoming","age":20}
collection.insert(data) # 插入数据

# 批量插入
more_data = [{"id":123,"name":"xiaoming","age":20,"salary":2000},
{"id":124,"name":"yangming","age":22,"salary":2400},
{"id":125,"name":"zhaofeng","age":28,"salary":2600}
] # 数据放入列表中
collectino.insert(more_data)

爬虫中主要用MongoDB来存储数据,用的就是insert方法

查找-find

查找数据使用的方法是find

1
2
find(查询条件,返回字段)  # 多条信息
find_one(查询条件,返回字段) # 只返回一条信息

参数都是字典类型,可以省略;爬虫中用的多的是find()方法,例如:

1
2
3
4
5
6
# 情形1
content = collection.find() # 返回的是全部内容

content = collection.find({'age':20}, # 查询age=20的人
{'_id':0,'name':1,"salary":1} # 限定返回的字段信息:0表示不返回,1表示返回
)
  • 第二个参数指定返回的内容:0表示不返回,1表示返回
  • _id必须人工指定其值0,才不会返回;其他数据统一返回,或者统一不返回
  • find()方法返回的是可迭代的PyMongo对象,可以被for循环展开,展开得到字典,字典对应的是每条记录
1
content = [x for x in collection.find({'age':20},{'_id':0,'name':1,"salary":1})]

逻辑查询

PyMongo也支持大于、小于、大于等于等逻辑查询,见表格:

使用方法:

  • 指定字段
  • 指定查询范围,范围也是字典的形式
1
2
collection.find({'age':{'$gt':29}})
collection.find({'age':{'$gte':29},'$lte':40})

结果排序-sort

将结果查询find出来之后可以通过sort方法进行排序,两个参数:

  • 指定的字段
  • -1表示降序,1表示升序
1
collection.find().sort('列名',1或-1)

使用的案例:

1
collection.find({'age':{'$gte':29,'$lte':40}}).sort('age',-1)  # 先查询,再降序排列

更新-udpate

更新数据的两个方法:

1
2
collection.update_one(参数1,参数2)  # 更新一条
collection.update_many(参数1,参数2) # 更新多条

两个参数都是字典,且都不能省略

两个参数都是字典,且都不能省略

两个参数都是字典,且都不能省略

使用的案列如下:

1
2
3
4
5
6
7
collection.update_one({'age':20},  # 将第一个年龄为20的人的名字改为xiaoming
{'$set':{'name':'xiaoming'}}
)

collection.update_many({'age':20}, # 将全部年龄为20的人的名字改为xiaoming
{'$set':{'name':'xiaoming'}}
)

删除-delete

删除数据的两种方法:

  • delete_one():删除一条
  • delete_many():删除多条

参数都是字典,不建议省略

1
2
collection.delete_one({'age':20})  # 删除一条
collection.delete_many({'age':20}) # 删除多条

结果去重-distinct

去重使用的是distinct()方法

1
collection.distinct('字段名称')

本文标题:MongoDB系列2-基本操作

发布时间:2020年07月26日 - 18:07

原始链接:http://www.renpeter.cn/2020/07/26/MongoDB%E7%B3%BB%E5%88%972-%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea