首页 > 数据库技术 > 详细

一个从MongoDB中导出给定日期范围内数据的shell脚本

时间:2019-03-26 15:05:49      阅读:193      评论:0      收藏:0      [点我收藏+]

 

给定一个日期,如何在shell中计算前几天或者后几天的日期?

方法如下:

#给定当前日期
d1=`date +%F`
 
#计算两天后的日期
offset=2
 
 
#d1转换成秒, since 1970-01-01 00:00:00 UTC
d1s=`date -d $d1 +%s`
 
#将偏移天数换算成秒数
offset_s=`expr 86400 \* $offset` 
 
#计算偏移后 的秒数
d2s=`expr $d1s + $offset_s`
 
#将偏移后的秒数转换成日期
d2=`date -d @$d2s + %F`

 

 

这里给出一个完整的脚本,用来从MongoDB中导出某个日期范围内的数据,数据导出后从MongoDB中进行删除

#!/bin/sh
#d1, the beginning date, eg:2017-06-28

d1=$1 
d1=`date -d $d1 +%F`
  
#transfer d1 to seconds

d2=`date -d $d1 +%s`
#increase d1 by one day

d2=`expr $d2 + 86400`
#transfer d2 from seconds to day

d2=`date -d @$d2 +%F`
 
#build query json

qj=‘{"time":{$gte:ISODate("‘"$d1"‘T00:00:00Z")}, "time":{$lt:ISODate("‘"$d2"‘T00:00:00Z")}}‘
#export

./mongoexport --db testDB --collection testColl --query="$qj" --fields="userId,userName" --type="csv" --out results"-$d1" --noHeaderLine
 
#generate js for delete

echo ‘var db = connect("testDB");‘ > delete.js
echo ‘db.testColl.remove({"time":{$gte:ISODate("‘"$d1"‘T00:00:00Z")}, "time":{$lt:ISODate("‘"$d2"‘T00:00:00Z")}})‘ >> delete.js
#delete 

./mongo delete.js

 

一个从MongoDB中导出给定日期范围内数据的shell脚本

原文:https://www.cnblogs.com/williamjie/p/10599947.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!