如何拦截来自 Presto 连接器的 mongoDB 查询

How to intercept mondoDB Query from Presto Connector

我编写了一些从 mongo 数据库集合中提取的 Presto 查询,但我们项目中的其他人直接查询 mongo。这些人想使用我的查询来节省他们重写查询的时间。

有没有办法 obtain/extract Presto 生成的 mongoDB 查询语言?

MongoDB connector documentation 中没有看到任何说明如何或是否可行的内容。

我知道那里有 SQL-mongo 转换器,但是 Presto SQL 扩展了正常的 SQL 以启用我们遇到的诸如展开数组等的东西根据我的经验,非关系型商店和这些皈依者在这些事情上遇到了麻烦。

我想最简单的方法是在查询为 运行 时查看 Mongodb 并从那里获取它,例如通过 logging:

db.setProfilingLevel(2)
db.system.profile.find().pretty()

您也可以使用一些 GUI,例如 MongoVue 或 Robo 3T - 我过去使用 MongoVue 来评估 运行 查询。

您可以在 log.properties 中设置 MongoDB 驱动程序日志级别 DEBUG:

org.mongodb=DEBUG

但是,它会打印很多不相关的日志(例如healthcheck)。提交问题 https://github.com/prestosql/presto/issues/5600