工作中遇到有个mongodb统计任务需要定时每天统计,特地写了一个脚本进行统计,使用EOF进行,mongodb语句输入
1、EOF
Shell中通常将EOF与 << 结合使用,表示后续的输入作为子命令或子Shell的输入,直到遇到EOF为止,再返回到主调Shell。可以把EOF替换成其他东西,意思是把内容当作标准输入传给程序。
回顾一下< <的用法。当shell看到< <的时候,它就会知道下一个词是一个分界符。在该分界符以后的内容都被当作输入,直到shell又看到该分界符(位于单独的一行)。这个分界符可以是你所定义的任何字符串。
下面是脚本内容:
#########################################################################
# File Name: a.sh
# Author: root
# mail: root.com
# Created Time: 2017年12月12日 星期二 14时42分44秒
#########################################################################
#!/bin/bash
#进入mongodb bin目录
cd /root/mongodb/bin
#连接数据库,-quiet去掉不必要的信息
MongoDB='./mongo 127.0.0.1:27017/movie -quiet'
NOW=`date +{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}Y-{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}m-{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}d`
#开始语句
$MongoDB <<EOF
db.getCollection('content').distinct("phone",{createTime:{\$gte:"$NOW 00:00:00",\$lte:"$NOW 23:59:59"}}).length;
exit;
EOF
然后命令行中将结果重定向到文件就OK了!
总结:mongdb真是一个坑,没有类似mysql into outfile的语句,想把查询结果导出来只能用这么个办法,找了快一天才查到这个办法解决.
常用脚本:
—–自动备份mongodb数据并压缩—
#!/bin/bash
filename=`date +{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}Y{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}m{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}d{5749fe182deba6f703e69800a8cc3afb9894ad400f350437bd2be724fa41f418}H`
backmongodbFile=mongodb$filename.tar.gz
cd /home/mongo/back/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoDBAgent -o mongodb_dump/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoDBBg -o mongodb_dump/
/usr/mongodb/bin/mongodump -h 192.168.1.7 -port 37017 -d MongoModelActor -o mongodb_dump/
tar czf $backmongodbFile mongodb_dump/
rm mongodb_dump -rf
—–自动解压并还原mongodb数据—
#!/bin/bash
filename='201712130900'
backmongodbFile=mongodb$filename.tar.gz
cd /home/mongo/back/
tar zxvf $backmongodbFile
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoDBAgent mongodb_dump/MongoDBAgent
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoDBBg mongodb_dump/MongoDBBg
/usr/mongodb/bin/mongorestore -h 192.168.1.6 -port 37017 --drop -d MongoModelActor mongodb_dump/MongoModelActor
rm mongodb_dump -rf