Bash — конвертировать MONGODB BSON в JSON

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

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

Как мне реализовать tojson, это так же просто, как сказать:

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

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

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

ИЗМЕНИТЬ

Итак, мне удалось получить «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.

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


person SnazzyBootMan    schedule 16.10.2014    source источник
comment
Я видел некоторые программы под названием b2json, которые конвертируют BSON в JSON.   -  person John Zwinck    schedule 16.10.2014
comment
Спасибо, Джон, я действительно хотел использовать jq, так как у меня больше шансов перенести это прошлое управление изменениями на сервер. Кроме того, в нем много полезных функций.   -  person SnazzyBootMan    schedule 16.10.2014
comment
Ага, понятно. Что ж, вы должны установить jq на тестовую машину или свой рабочий стол в ВМ (что это, Управление изменениями не любит ВМ ?!). У вас должна быть некоторая среда разработки/тестирования, которая не так заблокирована. Если нет, то пора искать новую работу!   -  person John Zwinck    schedule 16.10.2014
comment
Тогда это новая работа ;-) Мне нужна тестовая машина с запущенным Mongodb, а создание виртуальных машин требует времени.   -  person SnazzyBootMan    schedule 16.10.2014
comment
Затем запустите виртуальную машину на Amazon... Это займет максимум 5 минут.   -  person Matt    schedule 16.10.2014
comment
Спасибо @Matt, очень полезно, смотрите редактирование.   -  person SnazzyBootMan    schedule 17.10.2014


Ответы (1)


Вы можете использовать утилиту bsondump, поставляемую с mongodb:

bsondump yourfile.bson | head
person Alexander Sirenko    schedule 20.11.2015