MongoDB---如何避免插入重复数据(pymongo)

摘要:
如果我们想向数据库中添加数据并避免插入重复数据,只需将upstart更改为true即可。此时,这意味着如果找不到匹配的文件,将执行插入操作。例如,我想将以下数据保存到数据库中,但如果数据库中已经存在此数据,则不会执行任何操作。

以下摘自pymongo文档:

update_one(filterupdateupsert=False)

update_many(filterupdateupsert=False)

  • filter: A query that matches the document to update.
  • update: The modifications to apply.
  • upsert (optional): If True, perform an insert if no documents match the filter.

这两个是pymongo库的数据更新函数,其中upsert默认为False。如果我们想要把数据加入数据库,同时想要避免插入重复的数据,那么只要把upsert改为True即可,此时表示如果没有找到匹配的文件,那么执行插入操作。

例如,我想把下面这条数据保存至数据库,但是如果这条数据已经在数据库存在了,那么不进行任何操作。

{'index': '1', 'movie_name': '霸王别姬', 'pic': 'https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', 'release': '上映时间:1993-01-01', 'score': '9.5'}

那么应该把这条数据作为查询语句,然后执行collection.update_one(query,{'$set':query},upsert=True)。

query={'_id': ObjectId('5d23fc92c2a80d7e578a2ae2'), 'index': '1', 'movie_name': '霸王别姬', 'pic': 'https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', 'release': '上映时间:1993-01-01', 'score': '9.5'}
collection.update_one(query,{'$set':query},upsert=True)

参考:http://api.mongodb.com/python/current/api/pymongo/collection.html

免责声明:文章转载自《MongoDB---如何避免插入重复数据(pymongo)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇kettle多个表一起迁移-通过配置文件配置需要同步的字段,非全字段同步STM32自己的封装库下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在重命名SqlServer数据库时,报5030错误的解决办法

数据库不能重名名5030的错误,其实很简单原因就是有应用程序正在占用这个连接,使用这样一行命令就可以查询出正在占用的连接 use master select spid from master.dbo.sysprocesses where dbid=db_id('数据库原名') 执行下面这条语句杀掉连接进程就OK了 use master kill 54...

Winform开发常用控件之DataGridView的简单数据绑定——自动绑定

DataGridView控件可谓是Winform开发的重点控件,对于数据的呈现和操作非常方便,DataGridView可谓是既简单又复杂。简单在于其已经集成了很多方法,复杂在于可以使用其实现复杂的数据呈现和操作。 本文是入门级培训,先介绍DataGridView的简单应用,复杂的应用在后续的博文中会一一呈上。 DataGridView主要是呈现数据和数据操...

遇到联邦计算数据碰撞难题怎么办?不妨试一试PSI

摘要:随着MPC、隐私计算等概念的流行,诸多政府机构、金融企业开始考虑参与到多方计算的场景中,扩展数据的应用价值。 本文分享自华为云社区《使用PSI解决联邦计算的数据碰撞问题》,作者:breakDraw。 联邦计算场景 随着MPC、隐私计算等概念的流行,诸多政府机构、金融企业开始考虑参与到多方计算的场景中,扩展数据的应用价值。 以下面这个场景为例,银行可...

flutter DataTable数据表格

数据表显示原始数据集。它们通常出现在桌面企业产品中。DataTable Widget实现这个组件 文档:https://api.flutter.dev/flutter/material/DataTable-class.html import 'package:flutter/material.dart'; import './model/post.dar...

C#.Net 操作达梦数据库Demo

1、使用vs创建控制台项目,类库为 4.6.1 2、使用NuGet 引入 达梦数据提供器 DmProvider 安装DmProvider 后的变化 3、具体代码 using System; using Dm; namespace ConsoleApp1 { class Program { //返回结果...

C# 异步读取数据库里面的数据与绑定UI的解决办法

异步读取数据库,在数据绑定的时候会出现点问题,就是窗体界面会无法关闭,要结束任务才能结束进程。例如下面代码 首先按习惯的方法,设定线程更新UI a2.CheckForIllegalCrossThreadCalls = false; //a2为窗体名称 下面的代码就是从数据库里取得数据并绑定 private void button1_Click(object...