mongo客户端工具下载  https://robomongo.org/download
 
线上业务,k线 展示出现问题,相同时间戳的数据多次插入导致数据不真实,后经排查发现是每次都是写的四条数据,找开发配合一起查找问题,发现是后台逻辑处理的问题
 
需求:将重复的数据去掉,只保留一份数据
 
客户端数据查询:
 
 
 
  由于表太多 一张一张去删 很麻烦 于是写了个脚本偷懒
 
 #!/bin/bash
# liyongjian5179@.com
#将所有的表名导出来
mongo 192.168.112.128:/admin -uadmin -plyj &> .txt <<EOF
use user_center;
show collections
exit;
EOF sed -i '1,4d' .txt
#tail -n .txt > .txt
for TABLE in `cat .txt` ;do
echo ${TABLE}
#查重
mongo 192.168.112.128:/admin -uadmin -plyj <<EOF
use user_center
db.${TABLE}.aggregate([{\$group:{_id:{createTime:'\$createTime'},count:{\$sum:}}},{\$match:{count:{\$gt:}}}])
exit
EOF
STATUS=`echo $?`
echo $STATUS
if [ $STATUS = ];then
#去重
mongo 192.168.112.128:/admin -uadmin -plyj <<EOF
use user_center;
db["${TABLE}"].aggregate([{\$group: { _id: {createTime: '\$createTime'},count: {\$sum: },dups: {\$addToSet: '\$_id'}}},{\$match: {count: {\$gt: }}}]).forEach(function(doc){doc.dups.shift(); db["${TABLE}"].remove({_id: {\$in: doc.dups}}); });
exit
EOF
TATUS=`echo $?`
echo $STATUS
if [ $STATUS = ];then echo "去重 success" ; else echo "fail" ;fi else
echo "wrong"
exit fi
done
库如下:
> show dbs
admin        0.000GB
local        0.000GB
test         0.002GB
user_center  0.111GB
 
表如下:
btc_cnyt_12hour_kline
btc_cnyt_15min_kline
btc_cnyt_1hour_kline
btc_cnyt_1min_kline
btc_cnyt_2hour_kline
btc_cnyt_30min_kline
btc_cnyt_3day_kline
btc_cnyt_3min_kline
btc_cnyt_4hour_kline
btc_cnyt_5min_kline
btc_cnyt_6hour_kline
btc_cnyt_day_kline
btc_cnyt_week_kline
cnytplus_cnyt_12hour_kline
cnytplus_cnyt_15min_kline
cnytplus_cnyt_1hour_kline
cnytplus_cnyt_1min_kline
cnytplus_cnyt_2hour_kline
cnytplus_cnyt_30min_kline
cnytplus_cnyt_3day_kline
cnytplus_cnyt_3min_kline
cnytplus_cnyt_4hour_kline
cnytplus_cnyt_5min_kline
cnytplus_cnyt_6hour_kline
cnytplus_cnyt_day_kline
cnytplus_cnyt_week_kline
cnytplus_eth_12hour_kline
cnytplus_eth_15min_kline
cnytplus_eth_1hour_kline
cnytplus_eth_1min_kline
cnytplus_eth_2hour_kline
cnytplus_eth_30min_kline
cnytplus_eth_3day_kline
cnytplus_eth_3min_kline
cnytplus_eth_4hour_kline
cnytplus_eth_5min_kline
cnytplus_eth_6hour_kline
cnytplus_eth_day_kline
cnytplus_eth_week_kline
eos_cnyt_12hour_kline
eos_cnyt_15min_kline
eos_cnyt_1hour_kline
eos_cnyt_1min_kline
eos_cnyt_2hour_kline
eos_cnyt_30min_kline
eos_cnyt_3day_kline
eos_cnyt_3min_kline
eos_cnyt_4hour_kline
eos_cnyt_5min_kline
eos_cnyt_6hour_kline
eos_cnyt_day_kline
eos_cnyt_week_kline
eth_cnyt_12hour_kline
eth_cnyt_15min_kline
eth_cnyt_1hour_kline
eth_cnyt_1min_kline
eth_cnyt_2hour_kline
eth_cnyt_30min_kline
eth_cnyt_3day_kline
eth_cnyt_3min_kline
eth_cnyt_4hour_kline
eth_cnyt_5min_kline
eth_cnyt_6hour_kline
eth_cnyt_day_kline
eth_cnyt_week_kline
ltc_cnyt_12hour_kline
ltc_cnyt_15min_kline
ltc_cnyt_1hour_kline
ltc_cnyt_1min_kline
ltc_cnyt_2hour_kline
ltc_cnyt_30min_kline
ltc_cnyt_3day_kline
ltc_cnyt_3min_kline
ltc_cnyt_4hour_kline
ltc_cnyt_5min_kline
ltc_cnyt_6hour_kline
ltc_cnyt_day_kline
ltc_cnyt_week_kline
usdt_cnyt_12hour_kline
usdt_cnyt_15min_kline
usdt_cnyt_1hour_kline
usdt_cnyt_1min_kline
usdt_cnyt_2hour_kline
usdt_cnyt_30min_kline
usdt_cnyt_3day_kline
usdt_cnyt_3min_kline
usdt_cnyt_4hour_kline
usdt_cnyt_5min_kline
usdt_cnyt_6hour_kline
usdt_cnyt_day_kline
usdt_cnyt_week_kline
 
 
 
 

【解决】MongoDB 线上业务处理,数据去重脚本实现的更多相关文章

  1. Node+mongodb线上部署到阿里云

    Node+mongodb线上部署到阿里云 部署使用的主要工具是pm2+nginx,使用码云的私有仓库,自动部署到服务器,私有仓库和服务器要事先设置好免密码登录.使用DNSPOD进行域名解析.事先准备好 ...

  2. O2O 线下业务 和 线上业务,在特征工程上的差异

    人工智能在外卖送达时预估上的应用 这篇讲清楚了 O2O 线下业务 和 线上业务,在特征工程上的差异:

  3. 关于解决python线上问题的几种有效技术

    工作后好久没上博客园了,虽然不是很忙,但也没学生时代闲了.今天上博客园,发现好多的文章都是年终总结,想想是不是自己也应该总结下,不过现在还没想好,等想好了再写吧.今天写写自己在工作后用到的技术干货,争 ...

  4. 【Maven篇】---解决Maven线上部署java.lang.ClassNotFoundException和no main manifest attribute解决方法

    一.前述 maven 线上部署的话会出现一些问题比如java.lang.ClassNotFoundException或者no main manifest attribute的话,是因为maven 配置 ...

  5. git冲突解决、线上分支合并、luffy项目后台登陆注册页面分析引入

    今日内容概要 git冲突解决 线上分支合并 登陆注册页面(引入) 手机号是否存在接口 腾讯云短信申请 内容详细 1.git冲突解决 1.1 多人在同一分支开发,出现冲突 # 先将前端项目也做上传到 g ...

  6. redis扫描特定keys脚本,可避免阻塞,不影响线上业务

    #!/bin/sh ## 该脚本用来查询redis集群中,各个实例当中特定前缀的key,对应只需要修改redis的其中一个实例的 host和port## 脚本会自动识别出该集群的所有实例,并查出对应实 ...

  7. 转:一篇讲线上优化查 CPU的脚本

    原文链接:https://my.oschina.net/leejun2005/blog/1524687   摘要: 本文主要针对 Java 服务而言 0.背景 经常做后端服务开发的同学,或多或少都遇到 ...

  8. MongoDB 线上环境按照及配置(授权方式启动)

    1创建文件repo文件 #vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository bas ...

  9. vue3 迫不得已我硬着头皮查看了keepalive的源代码,解决了线上的问题

    1.通过本文可以了解到vue3 keepalive功能 2.通过本文可以了解到vue3 keepalive使用场景 3.通过本文可以学习到vue3 keepalive真实的使用过程 4.通过本文可以学 ...

随机推荐

  1. 前端路由vue-router介绍

    一.前端路由vue-router介绍 Vue-Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模 ...

  2. 从零开始的全栈工程师——JS面向对象( 六大继承 )

    一.对象克隆 var obj = { name:'li', age:23 } var obj2 = obj; // 这不是对象克隆 只是把obj的内存地址给obj2 1.for in克隆(浅拷贝)  ...

  3. sort属性

    学习文章---链接 总结笔记 ①sort是Array.prototype的属性, ②如果不写入参数,则按照转换为的字符串的每个字符的unicode位点进行排序, ③如果传入一个比较函数sort(fun ...

  4. JS基础学习——闭包

    JS基础学习--闭包 什么是闭包 闭包的定义如下,它的意思是闭包使得函数可以记住和访问它的词法范围,即使函数是在它声明的词法范围外执行.更简单来讲,函数为了自己能够正确执行,它对自己的词法范围产生闭包 ...

  5. Linux虚拟系统安装——Ubuntu18.04 & CentOS6.5

    Linux虚拟系统安装--Ubuntu18.04 & CentOS6.5 摘要:Linux简介.虚拟系统安装.系统备份与文件介绍 1. Linux简介 (1)1968年,MIT.Bell实验室 ...

  6. 【Gradle】 Gradle 综合

    Gradle User Guide:http://www.gradle.org/docs/current/userguide/userguide.html 针对它的中文翻译:http://ask.an ...

  7. Android 应用开发 之通过AsyncTask与ThreadPool(线程池)两种方式异步加载大量数据的分析与对比--转载

     在加载大量数据的时候,经常会用到异步加载,所谓异步加载,就是把耗时的工作放到子线程里执行,当数据加载完毕的时候再到主线程进行UI刷新.在数据量非常大的情况下,我们通常会使用两种技术来进行异步加载,一 ...

  8. 增强for循环 java.util.ConcurrentModificationException

    Java中的Iterator功能比较简单,并且只能单向移动: (1) 使用方法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()方法时,它返回序列的第一个元 ...

  9. 失去光标display=none事件的坑

    1.实现效果: 失去光标进行判断,如果内容为空出现提示. 2.页面代码: <tr class="tableform_tr"> <td width="15 ...

  10. 20150103 海南铁汉vs哈尔滨毅腾

    本文首发于『懂球帝』 这一场球赛虽然极其普通,在各位懂球帝面前或许不值得一提,但它极具历史意义,因为这是海南第一个职业联赛队伍的首场正式比赛,同时也是海南铁汉队第一次在正式比赛中与球迷们见面. 稍做一 ...