使用Shell上执行Mongo查询

需求

  在写小工具的时候,经常遇到需要从mongodb 里面查东西来用,因为要跟其他bash 工具链结合在一起用,所以最理想的方法是能够在shell 上执行查询,然后pipe 给接下来的工具做处理。

方案

幸运的是对于mongo 来说做起来是很方便的,只需要使用mongo --eval 即可。

例1:

mongo --eval 'var today='${today}';var todayFormat="'${todayFormat}'";var yesterday='${yesterday}';
var yesterdayFormat="'${yesterdayFormat}'";'  --quiet dbzq.js >> dbzqstat/dbzq-$today.csv

这段脚本通过mongo的--eval参数传递日期参数,通过--quiet选项加载js文件.

例2:

db=connect("127.0.0.1:27017/statistics");
db.auth("statistics","statistics07550831..");
rs.slaveOk();

var defaultManagerId=11500789, theOrgId=91108, str='';

{
str+='累计PV数\t'+db.tsp_shop_user_visit.count({orgId:91108, "visitDay":{$lte:today}});
str += '\n'

str+='累计客户经理注册人数\t'+db.tpm_user_info.count({orgId:91108, managerId:0, "regTime": { $lt: ISODate(todayFormat+"T16:00:00Z
") }});
str += '\n'
}
print(str);

这段脚本连接的是mongo从库的statistics库,从库默认没有查询权限。需要在从库上设置rs.slaveOk();

例3:

location /dbzqstat {
            alias /opt/www/dbzqstat;
}

这段脚本配置了Nginx的访问路径,当访问https://financial.nesc.cn/dbzqstat/dbzq-20190110.csv即可下载从Mongo数据库查询到的数据。

展开阅读全文

没有更多推荐了,返回首页