У меня есть команда оболочки, которая вызывает команду 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.
В то же время, пока я сижу, чешу затылок, ожидая появления эскадронов смерти по управлению изменениями, если у кого-то есть какие-то идеи, они будут очень признательны.
b2json, которые конвертируют BSON в JSON. - person John Zwinck   schedule 16.10.2014