Linux Shell脚本使用mongoexport一些查询条件的错误总结

我在尝试写一个定时任务,在shell脚本里按日导出mongodb的数据


mongo查询条件为:

{time:{$lt:1507381200,$gt:1507294800}}

定义两个变量(都是时间戳)

stamp=1507381200

stamp2=1507294800


一开始是这样写的:

/usr/local/mongodb/bin/mongoexport -h 127.0.0.1 --port 3612 -u DarkGame -p dg#2014 -d ${db_name} -c ${var} -q {time:{$lt:$stamp,$gt:$stamp2}} -o ${dpath}/${var}.dat


${db_name}是数据库名字,${var}是表名,${dpath}/${var}.dat是打包数据的目标路径,这些大家都不用理,我们着重看查询条件的写法

{time:{$lt:$stamp,$gt:$stamp2}}

运行时候报错 

too many positional arguments: [{time::1507294800}]


然后我改成:(两边加了单引号)

'{time:{$lt:$stamp,$gt:$stamp2}}'

还是报错

error validating settings: query '{time:{$lt:$stamp,$gt:$stamp2}}' is not valid JSON: invalid character '$' looking for beginning of value


最后修改成:(每个变量都用单引号括起来)

'{time:{$lt:'$stamp',$gt:'$stamp2'}}'

就可以了


附上最终的代码
 # 打包数据(stamp - stamp2这一天的数据)

/usr/local/mongodb/bin/mongoexport -h 127.0.0.1 --port 3612 -u root -p root -d ${db_name} -c ${var}  -q '{time:{$lt:'$stamp',$gt:'$stamp2'}}' -o ${dpath}/${var}.dat



运行结果

2017-11-08T13:56:04.467+1100    connected to: 127.0.0.1:3612
2017-11-08T13:56:04.495+1100    exported 149 records

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值