【pymongodb】去除重复记录
every blog every motto: You can do more than you think.
0. 前言
duang duang duang
1. 正文
1.1 插入数据
import pymongoclient = pymongo.MongoClient()
db = client['test']
collection = db['gb']collection.insert_one({'name': 'xiaoming', 'age': 19})
collection.insert_one({'name': 'xiaoming', 'age': 19})
collection.insert_one({'name': 'xiaomei', 'age': 12})
结果
1.2 方法一 distinct
1.2.1 基本原理
distinct原本只可以查询某条字段的唯一值,和numpy中unique方法类似。演示如下:
name = collection.distinct('name')
print(name)
1.2.2 实例展示
根据某几个字段判断记录是否重复,进而删除重复字段。
name = collection.distinct('name')
age = collection.distinct('age')
name_age = zip(name, age)for name, age in name_age:data = collection.find_one({'name': name, 'age': age}) # 根据字段查询记录collection.delete_many({'name': name, 'age': age}) # 删除所有记录collection.insert_one(data) # 重新插入记录
1.2.3 结果
1.3 方法二:插入时检查是否重复update
说明:利用update方法,对插入的数据进行判断是否存在,如果存在则不“插入(更新)”,不存在,则插入。具体见1.3.2
1.3.1 普通插入
data = [{'name': 'xiaoming', 'age': 19}, {'name': 'xiaoming', 'age': 19}, {'name': 'xiaomei', 'age': 12}]for ele in data:collection.insert_one(ele)
1.3.2 更新,过滤相同的值(插入前去重)
1. upsert:False
已有数据
1.1 数据库中没有指定的name
up_a = {'name': 'daxia', 'age': 100}up_data = [up_a]
for ele in up_data:temp = collection.update_one({'name': ele['name']}, {'$set': ele}, False)print(temp)
说明:
- update的第一个参数是查询条件,即根据这个条件查询已存在(集合collection)中的数据
- update的第二个参数是将要插入的值
- update的第三个参数upsert,默认为False
- False:只更新不插入
- True: 插入、更新
上面代码查询name为daxia 的记录,根据第一个参数判断,数据库中没有对应数据,upsert为False,则,不更新,结果无变换。
1.2 数据库中有指定的name
up_a = {'name': 'xiaomei', 'age': 100}up_data = [up_a]
for ele in up_data:temp = collection.update({'name': ele['name']}, {'$set': ele}, False)print(temp)
如下图,对应数据,进行了更新
2. upsert:True
已有数据
2.1 数据库中没有指定的name
up_a = {'name': 'daxia', 'age': 100}up_data = [up_a]
for ele in up_data:temp = collection.update_one({'name': ele['name']}, {'$set': ele}, True)
如下图所示,插入成功
2.2 数据库中有指定的name
up_a = {'name': 'xiaomei', 'age': 100}up_data = [up_a]
for ele in up_data:temp = collection.update_one({'name': ele['name']}, {'$set': ele}, True)# print(temp)
小结:
- update的第三个参数upsert
- 默认False,只更新,不插入
- True, 即更新,也插入
- 可以通过设置第三个参数为True,再设置第一个参数为(每条记录的)唯一值对每条记录进行过滤,匹配到相同的唯一值,进行更新,没有匹配到,则插入。达到插入前进行去重的效果。
参考文献
[1] https://www.jianshu.com/p/c9cdf6c8b379
[2] https://www.cnblogs.com/lkd8477604/p/9848958.html
[3] https://blog.csdn.net/Homewm/article/details/89312555
[4] https://www.jianshu.com/p/95db57fd93b3
【pymongodb】去除重复记录相关推荐
- oracle 输出重复记录,ORACLE 去除重复记录
ORACLE 去除重复记录 delete from tbl_talbe where (col1,col2,col3) in (select col1,col2,col3 from tbl_table ...
- sql 单表/多表查询去除重复记录
sql 单表/多表查询去除重复记录 单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 ********************* ...
- sqlite查询数据库去除重复记录
sqlite查询数据库去除重复记录: select *, count(distinct 字段名) from 表明 where 字段名1 = '条件' group by 字段名
- kettle开发篇-去除重复记录+排序记录-Day11
前言: 今天刚好第十一天,从今天开始我们讲5节关于EXCEL的操作,昨天讲了EXCEL表的计算,今天将在计算之前,需要EXCEL表去重再去计算,避免重复数据影响我们的决策.在这就需要用到两个组件,分别 ...
- SQL 去除重复记录 只保留重复记录中的一条
select a.* from USERLOGGERFILTER a where loggertime > '2010-05-31' and loggertime < '2010-06- ...
- php sql语句去掉重复,sql 去除重复记录的语句
IF OBJECT_ID('[tb]') IS NOT NULL DROP TABLE [tb] GO CREATE TABLE [tb] ([name] [nvarchar](10),[value] ...
- MYSQL 去除重复 记录
删除旧 delete from a using mix_crm_contact as a,mix_crm_contact as b where a.id<b.id and a.`telp ...
- SQL 去除重复、获取最新记录
应用中常会有需要去除重复的记录,或者获取某些最新记录(如:每个用户可以答题多次,每次答题时间不同,现在要获取所有用户的最新答题记录,即每个用户取最新的一条) 使用group 和max 即可实现上述功能 ...
- sql按时间取去重最近_SQL 去除重复、获取最新记录
应用中常会有需要去除重复的记录,或者获取某些最新记录(如:每个用户可以答题多次,每次答题时间不同,现在要获取所有用户的最新答题记录,即每个用户取最新的一条) 使用group 和max 即可实现上述功能 ...
- sql去除重复语句(转)
sql 单表/多表查询去除重复记录 单表distinct 多表group by group by 必须放在 order by 和 limit之前,不然会报错 ********************* ...
最新文章
- 3.1 A Historical Perspective 历史观点
- 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
- (13)处理静态资源(自定义资源映射)【从零开始学Spring Boot】
- 如何用node命令和webpack命令传递参数 转载
- html css右下角三角形,html – 框内的CSS中的三角形
- solaris下常见文件压缩/解压方式简单小结—待续中
- 深入理解 Synchronized
- java 继承 实现 会重写 方法吗_java 中继承,组合,重载,重写的实现原理 (转)...
- PS打造油画般的风景人像
- ASP.NET Core 3.0 实战:构建多版本 API 接口
- 计算机毕业论文技术可行性怎么写,毕业论文怎么写可行性分析?
- 【冰糖Python】深度森林 DeepForest
- Android扫码枪数据读取封装
- SAP PS 第19节 里程碑开票
- Material-design icon生成插件
- 2022年最新WordPress主题更新列表(2022年5月28日)
- 如何修改图片的dpi?图片的dpi怎么调?
- 2017夸专业计算机考研,2017跨专业考研有难度吗?
- 天蝎座性格最精确的解析
- 抽象类及抽象方法作用
热门文章
- html 二级菜单 鼠标移动消失,鼠标一离开导航菜单,二级菜单就隐藏,移不到二级菜单...
- python findall_Python 正则表达式:findall
- 爬虫实例3 批量抓取数据之异步请求(ajax)
- 爬虫技术python代码_2017.07.21 Python网络爬虫之Python代码格式
- html 伪元素作用,:before,:after伪元素妙用
- 怎么在电脑上看磁盘分配单元的大小_不升级配件、4种方法让电脑提速50%!
- php把时间加一天,php如何在某個時間上加一天?一小時? 時間加減(轉)
- S2D_基于深度学习的视觉稠密建图和定位_相关文章
- 算法笔记_面试题_11.正则表达式匹配
- 关于javaweb中sql语句中使用变量的情况