【发布时间】:2015-11-20 09:59:43
【问题描述】:
我有一个调用 MongoDB 命令并产生 BSON 输出的 shell 命令。然后我想用 jq 解析该输出,所以我需要使用 jq 的 tojson 将 BSON 转换为 JSON。
echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo
我如何实现 tojson 就这么简单吗:
echo "db._adminCommand({replSetGetStatus : 1})" | /path/to/mongo | jq '[.[]|tojson]'
我还没有将 jq 放在我的服务器上,因为我必须先证明它可以工作,然后才能发布它。
当我在在线演示中尝试 .[]|tojson 时,它不起作用,但我不确定这是否是演示限制?
编辑
所以我设法在运行 mongodb 的测试服务器上获取“jq”并尝试了这个:
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。 -
谢谢约翰,我真的很想使用“jq”,因为我有更多机会获得过去的变更管理并进入服务器。此外,它还有很多有用的功能。
-
哦,我明白了。好吧,您应该在测试机器上或在 VM 中的桌面上安装“jq”(那是什么,变更管理不喜欢 VM?!)。您必须有一些没有被锁定的开发/测试环境。如果没有,是时候换一份新工作了!
-
然后是新工作 ;-) 我需要一台运行 Mongodb 的测试机器,构建 VM 需要时间。
-
然后在 Amazon 上启动一个虚拟机...只需要 5 分钟就可以了