这几天发现mongodb 自动生成的_id 列包含了很多信息,其中前8位数是数据插入的时间,比较好玩,为了能查询数据插入时间(当然在保存对象里可以增加个时间列作为业务需要用),动手写了shell脚本,代码如下:
1 #!/bin/sh
2 # mongodb 数据插入数据库时间转换计算2012.5.21 lg
3 dateStr="$1"
4
5 if [ -z "$dateStr" ];then
6 echo "输入错误,不能为空..."
7 exit 1
8 fi
9
10 strLen=${#dateStr}
11
12 #$strLen>8 || echo "长度不能小于8" && exit 1
13
14 if [ $strLen -lt 8 ];then
15 echo "长度不能小于8"
16 exit 1
17 fi
18
19 #dateConvert()
20 #{
21 #value=$1
22 #dateStrFormat=${value:0:8}
23 #(date16to10=(16#$dateStrFormat))
24 #}
25
26 dateStrFormat=${dateStr:0:8}
27
28 dateInt=$((16#$dateStrFormat))
29 [ $? -gt 0 ] && exit 3
30 returnValue=`date -d "1970-01-01 UTC $dateInt sec" +"%Y-%m-%d %H:%M:%S"`
31
32 echo "结果为:$returnValue"
33 exit $?
2 # mongodb 数据插入数据库时间转换计算2012.5.21 lg
3 dateStr="$1"
4
5 if [ -z "$dateStr" ];then
6 echo "输入错误,不能为空..."
7 exit 1
8 fi
9
10 strLen=${#dateStr}
11
12 #$strLen>8 || echo "长度不能小于8" && exit 1
13
14 if [ $strLen -lt 8 ];then
15 echo "长度不能小于8"
16 exit 1
17 fi
18
19 #dateConvert()
20 #{
21 #value=$1
22 #dateStrFormat=${value:0:8}
23 #(date16to10=(16#$dateStrFormat))
24 #}
25
26 dateStrFormat=${dateStr:0:8}
27
28 dateInt=$((16#$dateStrFormat))
29 [ $? -gt 0 ] && exit 3
30 returnValue=`date -d "1970-01-01 UTC $dateInt sec" +"%Y-%m-%d %H:%M:%S"`
31
32 echo "结果为:$returnValue"
33 exit $?
脚本很短,呵呵。运行时,把mongodb _id 作为参数即可,结果如图: