2014-10-16 3 views
1

У меня есть команда оболочки, которая вызывает команду MongoDB и выдает вывод BSON. Затем я хочу проанализировать этот вывод с помощью jq, поэтому мне нужно преобразовать BSON в JSON, используя jj tojson.Bash - конвертировать MONGODB BSON в JSON

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

Как реализовать tojson это так просто, как делают это слово:

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

Я не поставить JQ на моем сервере еще, как я должен доказать, что он работает, прежде чем я могу получить его выпущенный.

Когда я пытаюсь. [] | Tojson в онлайн-демонстрации не работает, но я не был уверен, что это было демо-ограничение?

EDIT

Так мне удалось получить "JQ" на тестовом сервере работает MongoDB и попытался это:

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

ошибка я получил, было это:

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

Таким образом, казалось бы, что «jq» не может анализировать данные из replSetGetStatus.

В то же время, когда я сижу, царапая голову, ожидая, когда появятся группы по борьбе с изменениями, если у кого-то есть идеи, они будут очень признательны.

+0

Я видел, что некоторые программы плавающая вокруг называется 'b2json' которые преобразовывают BSON в формате JSON. –

+0

Спасибо, John, я действительно хотел использовать «jq», так как у меня больше шансов получить это управление изменениями и на сервере. Кроме того, у него много полезных функций. – Chris

+0

О, я вижу. Ну, вы должны установить «jq» на тестовой машине или на вашем рабочем столе в виртуальной машине (что это такое, Change Management не любит виртуальные машины ?!). У вас должна быть некоторая среда dev/test, которая не блокируется. Если нет, время для новой работы! –

ответ

4

Вы можете использовать утилиту bsondump приходя с MongoDB:

bsondump yourfile.bson | head 
Смежные вопросы