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. dataBinding与ListView及事件

    2015年Google IO大会分布了DataBinding库,能够更快捷便利的实现MVVM结构模式.但是,通过对DataBinding的学习,其中踩过得坑,今天要在这里记录一下.对于DataBind ...

  2. 沙箱模式的chrome浏览器的运行

    getUserMedia在chrome 47后已经不可以从非安全源访问(Insecure Origins),但测试搭建apprtc时服务器一般没有添加HTTPS安全验证,chrome就没有权限访问麦克 ...

  3. haproxy学习——安装(一)

    安装包:haproxy-1.5.4.tar.gz (挺小的,大约1.3M) ①.首先要sz到本地虚拟机上(centos-6.5),tar zxvf haproxy-1.5.4.tar.gz,完成解压. ...

  4. oracle查询时间

    oracle查询和时间有关的命令: 方法一:select * from dual where time between to_date('2012-06-18 00:00:00','yyyy-mm-d ...

  5. python下的selenium安装

    安装python 打开 Python官网,找到“Download”, 在其下拉菜单中选择自己的平台(Windows/Mac),一般的Linux平台已经自带的Python,所以不需要安装,通过打开“终端 ...

  6. JS支持可变参数(任意多个)

    <script type="text/javascript"> function abc(){ //js中有个变量arguments,可以访问所有传入的值 for(va ...

  7. ZT onActivityResult在android中的用法

    onActivityResult在android中的用法 举例说我想要做的一个事情是,在一个主界面(主Activity)上能连接往许多不同子功能模块(子Activity上去),当子模块的事情做完之后就 ...

  8. IOS UIImagePickerController(拍照或者读取相册)

      UIImagePickerController ● 使用UIImagePickerController就可以进行拍照或者读取相册 ● 通过sourceType属性来决定拍照还是读取相册 ➢ UII ...

  9. [19/03/21-星期四] 异常(Exception) (一)

    一.引言 在实际工作中,我们遇到的情况不可能是非常完美的.比如:你写的某个模块,用户输入不一定符合你的要求;你的程序要打开某个文件, 这个文件可能不存在或者文件格式不对 ,你要读取数据库的数据,数据可 ...

  10. js 中获取 日期

    运行结果