天天看點

踩坑——Mongodb mongoexport -q 的使用踩坑——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的小夥伴應該都懂

第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 [email protected] --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
           

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

@羲凡——隻為了更好的活着

若對部落格中有任何問題,歡迎留言交流