Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019-09-24 11:11
4723 查看
本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
您可能感兴趣的文章:
- Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
- python读取json文件并将数据插入到mongodb的方法
- python连接mongodb操作数据示例(mongodb数据库配置类)
- Python操作MongoDB数据库PyMongo库使用方法
- python操作mongodb根据_id查询数据的实现方法
- Python常见MongoDB数据库操作实例总结
- python如何实现excel数据添加到mongodb
- Python实现批量读取图片并存入mongodb数据库的方法示例
- Python实现将数据框数据写入mongodb及mysql数据库的方法
- Python操作MongoDB数据库的方法示例
- Python使用pymongo库操作MongoDB数据库的方法实例
相关文章推荐
- Python MongoDB 插入数据,已存在则不执行,不存在则插入
- Python插入字符串数据到MySQL出现乱码、问号的解决方法
- SqlBulkCopy批量插入数据时,不执行触发器和约束的解决方法
- oracle 存在数据修改 不存在数据插入 使用 MERGE INTO 解决
- Python操作Mongodb插入数据的两种方法:insert_one()与insert_many()
- mongodb 当数据存在时更新数据,数据不存在时插入数据
- 【转载】SqlBulkCopy批量插入数据时,不执行触发器和约束 解决方法
- SqlBulkCopy批量插入数据时,不执行触发器和约束 解决方法
- MongoDB详解--使用Java对MongoDB中存在的数据进行更新不存在的数据进行插入的操作
- python读取json文件并将数据插入到mongodb的方法
- Hibernate JPA中insert插入数据后自动执行select last_insert_id()解决方法
- hibernate先删除数据,紧接着执行插入时的异常解决之道——中间不能调用flush()、clear()等方法
- Python MongoDB 插入数据,已存在则不执行,不存在则插入
- python读取json文件并将数据插入到mongodb的方法
- mysql学习总结一当数据不存在的时候插入,存在的时候进行更新,删除重复数据
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- SSIS处理导入数据时, 存在的更新, 不存在的插入
- 在SQLServer2005中使用SQL语句插入数据出现乱码或问号的解决方法
- 交叉表的实殃及向SQL SERVER数据库中插入数据时,出现乱码或???(问号)的解决方法。
- PHP——向数据库插入数据时乱码的解决方法