踩坑——Mongodb mongoexport -q 的使用

@羲凡——只为了更好的活着

踩坑——Mongodb mongoexport -q 的使用

先说干货,使用mongoexport -q 需要注意以下两点
1、-q 后面的参数一定要写成标准的json格式,如果怕自己写的不对,找一个json解析工具验证一下
2、一定要将json用单引号包起来,放在 -q的后面,切记切记
成功样例如下:
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q '{"channel":{ "$in":["210020","210032"]},"timestamp":{"$gte":1596696003149,"$lte":1596696003149}}' \
-u admin -p 123456 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json

-------------------------以下是我的踩坑经历,有兴趣看没兴趣过-------------------------
-------------------------以下是我的踩坑经历,有兴趣看没兴趣过-------------------------
-------------------------以下是我的踩坑经历,有兴趣看没兴趣过-------------------------

先登录哈(如果是主从模式,一定要用主节点的IP哦)
mongo --host 10.10.227.227 --port 30000 -u admin -p 123456
先来一个能在命令行中能直接执行的样例,会用的mongodb的小伙伴应该都懂
db.eventCenter.find({channel:{ $in:["210020","210032"]},timestamp:{$gte:1596696003149,$lte:1596696003149}})
第1波,现在我把find中的内容直接放在 monoexport 的 -q 后面
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q {channel:{$in:["210020","210032"]},timestamp:{$gte:1596696003149,$lte:1596696003149}} \
-u admin -p 123456 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json
第一次执行,就会报错如下,
2020-08-17T14:35:34.663+0800    too many positional arguments: [:[210020,210032]},timestamp::1596696003149 :[210020,210032]},timestamp::1596696003149]
2020-08-17T14:35:34.663+0800    try 'mongoexport --help' for more information
第2波,网上查一波发现说 -q 后面跟的是json,我纳闷了,我这不是json么?命令行里面你都能执行,我找一个json网页解析了一下确实不是标准的json,修改一波后如下
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q {"channel":{ "$in":["210020","210032"]},"timestamp":{"$gte":1596696003149,"$lte":1596696003149}} \
-u admin -p 123456 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json
第二次执行,还报同样的错误
2020-08-17T14:42:46.258+0800    too many positional arguments: [:[210020,210032]},timestamp::1596696003149} :[210020,210032]},timestamp::1596696003149}]
2020-08-17T14:42:46.258+0800    try 'mongoexport --help' for more information
第3波,是不是 -q 后面的参数要用双引号引起来,添加双引号后如下
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q "{"channel":{ "$in":["210020","210032"]},"timestamp":{"$gte":1596696003149,"$lte":1596696003149}}" \
-u admin -p 123456 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json
第三次执行,有新的报错了,开心史密达
2020-08-17T14:47:19.597+0800    error validating settings: query '[123 99 104 97 110 110 101 108 58 123 32 58 91 50 49 48 48 50 48 44 50 49 48 48 51 50 93 125 44 116 105 109 101 115 116 97 109 112 58 123 58 49 53 5754 54 57 54 48 48 51 49 52 57 44 58 49 53 57 54 54 57 54 48 48 51 49 52 57 125 125]' is not valid JSON: invalid character ':' looking for beginning of object key string
2020-08-17T14:47:19.597+0800    try 'mongoexport --help' for more information
第4波,是不是 -q 后面的参数外面用双引号了,我把里面改成单引号试一下
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q "{'channel':{ '$in':['210020','210032']},'timestamp':{'$gte':1596696003149,'$lte':1596696003149}}" \
-u admin -p 123456 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json
第四次执行,没有报错,但是条数是零,我怀疑自己了,我这个查询条件肯定是有一条数据的。看到下面的时候我内心是奔溃的,一万个草泥马在奔腾
2020-08-17T14:48:16.013+0800    connected to: 10.10.227.227:30000
2020-08-17T14:48:16.021+0800    exported 0 records

.
.
.

第N波,将json中的字段用双引号,外面用单引号将json包起来
mongoexport --authenticationDatabase admin --host 10.10.227.227 --port 30000 \
-q '{"channel":{ "$in":["210020","210032"]},"timestamp":{"$gte":1596696003149,"$lte":1596696003149}}' \
-u admin -p YumChina@123 --db eventcenter --collection eventCenter \
--type json --out /opt/bigData/user/aaron/eventcenter.json
第N次执行,正确
2020-08-17T14:55:42.703+0800    connected to: 10.10.227.227:30000
2020-08-17T14:55:42.709+0800    exported 1 record

===================================================================

@羲凡——只为了更好的活着

若对博客中有任何问题,欢迎留言交流

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值