疯狂 SQL 转换系列 - SQL for MongoDB
关于使用 SQL 访问 MongoDB 的解决方案,网络上已经可以查到很多。有相当一部分都是比较重的,有的需要安装插件,通过插件界面进行查询交互的,如:DataGrip;有的需要安装分布式计算引擎,并能提供更好的访问性能及应用效果,如:Presto。而对于一些采用 MongoDB 数据库而没有特别复杂应用的开发场景,即直接使用 sql 就能很好满足数据库访问需求的轻量级应用场景,方案相对较少一些。本文将介绍一种由 MOQL-Transx 开源项目提供的采用 sql 检索 MongoDB 的轻量级解决方案。
MOQL-Transx 是一个致力于减少开发者学习成本,用 SQL 语法检索各类数据库的开源项目。项目包括两个模块,moql-translator 用于完成从 MOQL(SQL92 语法子集)到各类数据库 DSL 的翻译;moql-querier 用于完成对各类数据库以 SQL 语言检索并获得二维结果的输出。由于 MongoDB 并没有一个完整意义上的 DSL,故本文介绍的部分主要是使用 moql-querier 中的 MongoDBQuerier 类来完成对 MongoDB 的检索。如果有兴趣查看实现,也可以通过 moql-translator 中的 MongoDBTranslator 来了解其如何将 SQL 语法转换为了伪 MongoDB DSL。(注:详见https://github.com/colorknight/moql-transx readme 中的用 SQL 访问 MongoDB 的章节)。
言归正转,如何使用 SQL 访问 MongoDB 数据库呢,只要用下面几行代码就可以搞定,超级简单。
该方案中,常用的 SQL 语法基本都能使用,都对 MongoDB 中类似的功能进行了映射。支持的语法子句包括:Select、From、LeftJoin、Where、GroupBy、Having、OrderBy、Limit,其中更细的语法支持对应表可以参见项目 readme 中的相应章节的说明。
评论