【问题标题】:BASH BSON parserBASH BSON 解析器
【发布时间】:2012-10-12 04:22:19
【问题描述】:

我们需要从 BASH shell 脚本中查询 Mongo DB。使用 eval 和 Mongo 的 printjson() 给了我文本输出,但它需要被解析。不能使用其他脚本语言(Python、Ruby、Erlang 等)。

我查看了 JSON.sh(一个 BASH 脚本库 JSON 解析器:https://github.com/rcrowley/json.sh),除了无法识别 BSON-but-not-JSON 数据类型的问题之外,它似乎接近于解决方案。在我尝试修改它以识别 BSON 数据类型之前,有人知道现有的解决方案吗?

谢谢。

10/11 下面 Stennie 指出我在 MongoDB 用户组中收到了答复,并提供了一个 URL。答案非常好和完整,并开始,“MongoDB 实际上使用我们称之为 Mongo Extended JSON 的东西,它与 vanilla JSON 标准有点不同......”所以我将不得不修改解析器。谢谢大家。

【问题讨论】:

  • 调用“其他解释器”或帮助程序有什么限制? JSON.sh 使用sed 进行解析;如果在您的服务器环境中默认安装 AWK 或 Perl 之类的解释器(解决方案仅限于使用预安装的核心模块),难道不是公平的游戏吗?
  • Stennie:原版 RedHat/SUSE 中可用的任何东西都是公平的游戏。我们只是无法安装现代脚本语言。 (我没有看到 Perl)如果有人要去那里,我愿意推销 Mongo BASH 驱动程序...... CVSDave
  • 限制的来源究竟是什么?您不能安装任何大的东西或根本无法安装?你不能在家里至少有可执行文件吗?那你可以试试像 Lua 这样的小东西。
  • 奥列格:客户就是客户;我们只能安装我们的软件。我想有各种各样的担忧,有些是合理的,有些是愚蠢的,但这些都是我必须工作的限制。我有 bash,Mongo。和 *nix 实用程序。
  • 这个问题也在mongodb-user group讨论。

标签: bash parsing mongodb bson


【解决方案1】:

您是否想使用tojson() 而不是printjson() 并循环通过 tojson() 的结果来解析字段?

【讨论】:

  • 这似乎没有任何区别。问题似乎是 BSON 允许各种右手标记,例如 JSON(以及 JSON 解析器)不允许的 ObjectId("123456789"),因此解释为损坏的格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2015-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多