mongo客户端工具下载 https://robomongo.org/download
线上业务,k线 展示出现问题,相同时间戳的数据多次插入导致数据不真实,后经排查发现是每次都是写的四条数据,找开发配合一起查找问题,发现是后台逻辑处理的问题
需求:将重复的数据去掉,只保留一份数据
客户端数据查询:
由于表太多 一张一张去删 很麻烦 于是写了个脚本偷懒
1 #!/bin/bash 2 # liyongjian5179@163.com 3 #将所有的表名导出来 4 mongo 192.168.112.128:27017/admin -uadmin -plyj &> 1.txt <<EOF 5 use user_center; 6 show collections 7 exit; 8 EOF 9 10 sed -i '1,4d' 1.txt 11 #tail -n 2 1.txt > 2.txt 12 for TABLE in `cat 1.txt` ;do 13 echo ${TABLE} 14 #查重 15 mongo 192.168.112.128:27017/admin -uadmin -plyj <<EOF 16 use user_center 17 db.${TABLE}.aggregate([{$group:{_id:{createTime:'$createTime'},count:{$sum:1}}},{$match:{count:{$gt:1}}}]) 18 exit 19 EOF 20 STATUS=`echo $?` 21 echo $STATUS 22 if [ $STATUS = 0 ];then 23 #去重 24 mongo 192.168.112.128:27017/admin -uadmin -plyj <<EOF 25 use user_center; 26 db["${TABLE}"].aggregate([{$group: { _id: {createTime: '$createTime'},count: {$sum: 1},dups: {$addToSet: '$_id'}}},{$match: {count: {$gt: 1}}}]).forEach(function(doc){doc.dups.shift(); db["${TABLE}"].remove({_id: {$in: doc.dups}}); }); 27 exit 28 EOF 29 TATUS=`echo $?` 30 echo $STATUS 31 if [ $STATUS = 0 ];then echo "去重 success" ; else echo "fail" ;fi 32 33 else 34 echo "wrong" 35 exit 123 36 37 fi 38 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