这是我参与更文挑战的第27天,活动详情查看:更文挑战
如果❤️我的文章有帮助,欢迎评论、关注、点赞。这是对我继续技术创作最大的鼓励。更多往期文章在我的个人博客
删除数据
比如刚刚新增的时候,我们发现 李四-英语
成绩重复插入了,所以我们应该删除其中一条可以如下操作:
ret2delete = collect.delete_one({"student_name" : "李四", "subject" : "英语"})
print(ret2delete)
# <pymongo.results.DeleteResult object at 0x000001D4AA0D15C8>
全部删除呢?
ret2delete = collect.delete_many({"student_name" : "李四", "subject" : "英语"})
print(ret2delete)
修改数据
比如我们发现 之前新增 考试得分数据,缺少考试时间。我们需要更新数据,可以这么做:
# 更新单个
ret2update = collect.update_one({"class_name" : "高三(1)班"},{ "$set":{"date":"20200301"} })
print(ret2update.matched_count) # 1
# 更新多个
ret2update = collect.update_many({"class_name" : "高三(1)班"},{ "$set":{"date":"20200301"} })
print(ret2update.matched_count) # 3
$set
的意义在于 告诉 pymongo 我只更新 文档中的 date
字段,其他字段不变;如果缺乏 $set
,则会使用 {"date":"20200301"} }
替换整个文档
除了$set
,还有 $inc
满足自增、自减操作如下:
ret2update = collect.update_one({"class_name" : "高三(1)班"},{ "$inc":{"score":"1"} })
ret2update = collect.update_one({"class_name" : "高三(1)班"},{ "$inc":{"score":"-0.5"} })
print(ret2update.matched_count) # 3
而且从 mongodb 的官方文档,我们可以得知 $inc
为原子操作,适合并发情况下的应用
其他操作
查询出部分我们想要的数据后,剩下的就是聚合操作了:
统计数量
totalnum = collect.find().count()
排序
排序时,直接调用 sort()
方法,并在其中传入排序的字段及升降序标志即可。示例如下:
results = collect.find().sort('name', pymongo.ASCENDING)
print([result['name'] for result in results])
分页
分页时调用 skip()
偏移方法,limit()
指定结果数
results = collect.find().sort('name', pymongo.ASCENDING).skip(2).limit(2)
print([result['name'] for result in results])