Bash-将MONGODB BSON转换为JSON

Sna*_*Man 2 json mongodb bson

我有一个shell命令,该命令调用MongoDB命令并产生BSON输出。然后,我想用jq解析该输出,因此我需要使用jq的tojson将BSON转换为JSON。

echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo
Run Code Online (Sandbox Code Playgroud)

我如何实现tojson就是这么简单:

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

我还没有将jq放到服务器上,因为我必须证明它能在发布前起作用。

当我在在线演示中尝试。[] | tojson时,它不起作用,但是我不确定这是否是演示限制吗?

编辑

因此,我设法在运行mongodb的测试服务器上获得了“ jq”并尝试了以下操作:

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

我收到的错误是这样的:

parse error: Invalid numeric literal at line 1, column 8
Run Code Online (Sandbox Code Playgroud)

因此,似乎“ jq”无法解析replSetGetStatus中的数据。

同时,当我坐着挠头,等待变更管理死亡小队露面时,如果有人有任何想法,将不胜感激。

小智 5

您可以使用mongodb随附的bsondump实用程序:

bsondump yourfile.bson | head
Run Code Online (Sandbox Code Playgroud)

  • 将 BSON 转换为 JSON:`bsondump collection.bson --outFile=collection.json` (2认同)