2014-10-16 4 views
1

MongoDB 명령을 호출하고 BSON 출력을 생성하는 쉘 명령이 있습니다. JSON을 jq의 tojson을 사용하여 JSON으로 변환해야하므로 jq를 사용하여 출력을 파싱하고 싶습니다.Bash - MONGODB BSON을 JSON으로 변환

echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo | jq '[.[]|tojson]' 

나는 그것을 얻을 수 전에 작동 증명해야로서 나는 아직 내 서버에 JQ를 넣어되지 않은 : 나는 tojson을 구현하려면 어떻게

echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo 

이 말을하는 것처럼 간단합니다 풀어 놓았다.

온라인 데모에서 [] | tojson을 시도하면 작동하지 않지만 이것이 데모 제한 사항인지 확실하지 않습니다. 편집

그래서 나는 테스트 서버를 실행하여 MongoDB의 "JQ를"그럭저럭이 시도 :

parse error: Invalid numeric literal at line 1, column 8 

:

echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo | ./jq '.members[] | {Server: .name, State: .stateStr}' 

내가받은 오류이 있었다 따라서 "jq"는 replSetGetStatus에서 데이터를 구문 분석 할 수 없다는 것을 알 수 있습니다.

변경 관리 사망 분대가 나타나기를 기다리는 동안 누군가가 몇 가지 아이디어를 가지고 있으면 크게 감사 할 것입니다.

+0

나는 일부 프로그램이 주위 JSON에 BSON 변환'b2json'되는라는 부동 보았다. –

+0

존 감사합니다. 저는 과거의 변경 관리를 받고 서버를 사용할 기회가 많아서 "jq"를 사용하고 싶었습니다. 게다가 유용한 기능이 많이 있습니다. – Chris

+0

아, 알겠습니다. 자, 테스트 머신이나 VM의 데스크탑에 "jq"를 설치해야합니다 (변경 관리는 VM을 좋아하지 않습니까?). 잠겨 있지 않은 dev/test 환경이 있어야합니다. 그렇지 않다면 새로운 직업을 구하십시오! –

답변

4

당신은 MongoDB를 함께 오는 유틸리티를 bsondump 사용할 수 있습니다

bsondump yourfile.bson | head