Jq 无法解析 MongoDB 输出文档
Jq cannot parse MongoDB output document
Jq 是处理 bash 中 JS 文档的好工具。但是由于 Mongodb 添加的功能,我不能用来解析一些 MongoDB 输出文档。
MongoDB Json return 的示例:
{
"_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
}
]}
jq给出的错误是:
parse error: Invalid numeric literal at line 15, column 32
如有任何帮助,我们将不胜感激。
这是因为mongo在后台使用了BSONsee this
使用带有 json
选项的 mongoexport 将允许生成干净的 json 文件:
"CreatedDate":{"$date":"2016-08-13T01:01:20.833Z"}
而不是:
"CreatedDate" : ISODate("2016-08-13T01:01:20.833Z"),
一种可能足以满足某些用途的解决方法是转换 mongo shell 命令的输出。我使用此模式作为解决方法:
mongo --quiet --eval "rs.config()" | sed -e 's/: [a-zA-Z]*(\(.*\))/: ""/' | jq '.'
它删除了“:”之后的所有函数调用,只保留值。
我知道我来晚了一点,但是 Mongo shell 有内置的 JavaScript 支持。所以你可以使用 JSON.stringify
.
上面的具体例子,可以用下面的
mongo --quiet --eval "JSON.stringify(rs.config())"
Jq 是处理 bash 中 JS 文档的好工具。但是由于 Mongodb 添加的功能,我不能用来解析一些 MongoDB 输出文档。 MongoDB Json return 的示例:
{
"_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
}
]}
jq给出的错误是:
parse error: Invalid numeric literal at line 15, column 32
如有任何帮助,我们将不胜感激。
这是因为mongo在后台使用了BSONsee this
使用带有 json
选项的 mongoexport 将允许生成干净的 json 文件:
"CreatedDate":{"$date":"2016-08-13T01:01:20.833Z"}
而不是:
"CreatedDate" : ISODate("2016-08-13T01:01:20.833Z"),
一种可能足以满足某些用途的解决方法是转换 mongo shell 命令的输出。我使用此模式作为解决方法:
mongo --quiet --eval "rs.config()" | sed -e 's/: [a-zA-Z]*(\(.*\))/: ""/' | jq '.'
它删除了“:”之后的所有函数调用,只保留值。
我知道我来晚了一点,但是 Mongo shell 有内置的 JavaScript 支持。所以你可以使用 JSON.stringify
.
上面的具体例子,可以用下面的
mongo --quiet --eval "JSON.stringify(rs.config())"