前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL检索MongoDB的轻量级解决方案

SQL检索MongoDB的轻量级解决方案

原创
作者头像
colorknight
发布2022-02-28 11:48:57
1.2K0
发布2022-02-28 11:48:57
举报
文章被收录于专栏:TripodTripod

关于使用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数据库呢,只要用下面几行代码就可以搞定,超级简单。

代码语言:javascript
复制
// 构建MongoDB查询器
MongoDBQuerier dataQuerier = new MongoDBQuerier();
String[] serverIps = new String[] { "172.30.30.8" };
Properties properties = new Properties();
// 完成对MongoDB的连接
dataQuerier.connect(serverIps, properties);
// 输入SQL语句,返回二维结果集,类似与JDBC的ResultSet
RecordSet recordSet = dataQuerier.query("select w.dns, w.ip from mydb.web w where (w.port=443 or w.port=8080) and w.ip='127.0.0.1' or w.ip='127.0.0.2'");
// 打印输出
outputRecordSet(RecordSet recordSet)

该方案中,常用的SQL语法基本都能使用,都对MongoDB中类似的功能进行了映射。支持的语法子句包括:Select、From、LeftJoin、Where、GroupBy、Having、OrderBy、Limit,其中更细的语法支持对应表可以参见项目readme中的相应章节的说明。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档