Jq是一个很好的工具来处理bash中的JS文档.但由于Mongodb添加的功能,我不能用来解析一些MongoDB输出文件.MongoDB Json返回的示例:
{
"_id" : "example",
"version" : 23,
"members" : [
{
"_id" : 0,
"host" : "192.168.0.1:27017",
"slaveDelay" : NumberLong(0), <---- Here jq failed to parse this line
"votes" : 1
}
]}
Run Code Online (Sandbox Code Playgroud)
jq给出的错误是:
parse error: Invalid numeric literal at line 15, column 32
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
小智 13
我知道我有点太晚了,但是Mongo shell有内置的JavaScript支持.所以你可以使用JSON.stringify.
对于上面的具体示例,您可以在下面使用
mongo --quiet --eval "JSON.stringify(rs.config())"
对某些用途来说足够的解决方法是转换mongo shell命令的输出.我使用此模式进行解决方法:
mongo --quiet --eval "rs.config()" | sed -e 's/: [a-zA-Z]*(\(.*\))/: "\1"/' | jq '.'
Run Code Online (Sandbox Code Playgroud)
它删除':'后的所有函数调用,并仅保留该值.
这是因为 mongo 在后端使用 BSON 造成的,请参阅此
使用带有选项的 mongoexportjson将允许生成干净的 json 文件:
"CreatedDate":{"$date":"2016-08-13T01:01:20.833Z"}
Run Code Online (Sandbox Code Playgroud)
代替:
"CreatedDate" : ISODate("2016-08-13T01:01:20.833Z"),
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |