Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
作者:九茶 时间:2022-11-16 20:48:41
本文实例讲述了Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法。分享给大家供大家参考,具体如下:
前言:
想把QQ日志爬虫(Python)爬下来的日志保存到 MongoDB 里面。
但 insert 的时候报错:
E11000 duplicate key error collection: QQ.Blog index: _id_ dup key: { : "965464518_1301232446" }
后来知道错误的原因是:插入的数据和已有数据的 ID 重复了。
我想要的是:插入一篇日志,如果该日志(ID)已存在,则不执行(也不更新);如果不存在则插入。
百度中大部分的答案都是用更新,但如果 ID 存在的话我是想直接不执行的,没有更新已有数据的必要。
解决方案:
update里有个参数 ‘$setOnInsert' 可以实现”存在则不执行”的功能,可见 $setOnInsert 官方文档。
示例:
起始数据:
> db.Blog.insert({"_id":"123456", "blog_cont":"abcdef", "title":"《My Test》"})
> db.Blog.find()
{ "_id" : "123456", "blog_cont" : "abcdef", "title" : "《My Test》" }
加入相同 ID 的日志:
> db.Blog.update({"_id":"123456"}, {$setOnInsert:{"blog_cont":"abc123", "other":"hello world!"}}, {upsert:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 0 })
>
> db.Blog.find()
{ "_id" : "123456", "blog_cont" : "abcdef", "title" : "《My Test》" }
加入不同 ID 的日志:
> db.Blog.update({"_id":"123"}, {$setOnInsert:{"blog_cont":"abc123", "other":"hello world!"}}, {upsert:true})
WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : "123" })
>
> db.Blog.find()
{ "_id" : "123456", "blog_cont" : "abcdef", "title" : "《My Test》"
{ "_id" : "123", "blog_cont" : "abc123", "other" : "hello world!" }
如果某些内容想更新的话(例如更新 title )可以用 ‘$set':
> db.Blog.update({"_id":"123456"}, {$setOnInsert:{"blog_cont":"abc123", "other":"hello world!"}, $set:{"title":"《New Title》"}}, {upsert:true})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>
> db.Blog.find()
{ "_id" : "123456", "blog_cont" : "abcdef", "title" : "《New Title》
{ "_id" : "123", "blog_cont" : "abc123", "other" : "hello world!" }
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/Bone_ACE/article/details/50696477
标签:Python,MongoDB,插入数据
0
投稿
猜你喜欢
SQLServer地址搜索性能优化
2024-01-14 10:48:42
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2022-05-02 11:27:40
PHP如何从txt文件中读取数据详解
2023-11-15 02:37:32
python实现根据月份和日期得到星座的方法
2023-02-02 01:05:51
利用WSH获取计算机硬件信息、DNS信息等
2008-05-05 13:04:00
基于Python实现批量缩放图片(视频)尺寸
2021-03-23 12:21:22
python 变量初始化空列表的例子
2022-09-03 08:14:42
Python性能测试工具Locust安装及使用
2021-08-17 23:22:56
Vue状态管理库Pinia详细介绍
2024-05-09 15:11:43
python实现桌面托盘气泡提示
2023-05-16 21:27:15
asp中获取当前页面的地址与参数的函数代码
2011-02-20 10:37:00
主流浏览器性能比较
2009-10-19 14:34:00
MySQL和SQLServer的比较
2024-01-15 00:30:39
存储过程优缺点分析
2024-01-22 09:41:14
数据库之:Mysql数据库服务器安装与配置
2010-08-31 14:11:00
linux系统oracle数据库出现ora12505问题的解决方法
2024-01-27 09:06:15
JS实现跟随鼠标闪烁转动色块的方法
2024-04-16 09:05:21
详解微信小程序之提高应用速度小技巧
2024-04-22 22:17:57
Go语言入门教程之Arrays、Slices、Maps、Range操作简明总结
2024-05-09 14:56:40
jQuery Ajax全解析
2024-04-09 19:45:00