CN116775680A - 一种基于SQL操作MongoDB数据库的方法 - Google Patents
一种基于SQL操作MongoDB数据库的方法 Download PDFInfo
- Publication number
- CN116775680A CN116775680A CN202310633135.0A CN202310633135A CN116775680A CN 116775680 A CN116775680 A CN 116775680A CN 202310633135 A CN202310633135 A CN 202310633135A CN 116775680 A CN116775680 A CN 116775680A
- Authority
- CN
- China
- Prior art keywords
- sql
- service processor
- target resource
- database
- resource
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000003780 insertion Methods 0.000 claims description 22
- 230000037431 insertion Effects 0.000 claims description 22
- 241001178520 Stomatepia mongo Species 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 11
- 238000013507 mapping Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 12
- 230000008569 process Effects 0.000 description 6
- 230000002776 aggregation Effects 0.000 description 5
- 238000004220 aggregation Methods 0.000 description 5
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 4
- 238000003860 storage Methods 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据库应用领域,公开了一种基于SQL操作MongoDB数据库的方法,包括:根据资源的请求路径获得目标资源的地址以及附加参数信息,基于目标资源的地址判断目标资源是否存在且有权访问,在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句,根据SQL查询语句获得查询对象和操作参数,根据查询对象和操作参数生成业务处理器,业务处理器在MongoDB数据库上执行操作,并将执行结果转换为JSON对象返回。MongoDB的操作语法不是标准的SQL语法,本发明提供的驱动系统,可以使用标准SQL对MongoDB进行开发,尤其是在一套系统中涉及多种数据库的情况下,可以做到将MongoDB和其它数据库进行统一开发管理,能降低开发成本,提高开发效率。
Description
技术领域
本发明涉及数据库应用领域,尤其涉及一种基于SQL操作MongoDB数据库的方法。
背景技术
当前在大数据时代背景下,各行各业数据量巨大,对于大量多源异构数据的存储,会针对性的使用不同的数据库,在数据系统开发时,常常涉及到同时对多个数据库的开发,如果数据库之间的操作语法各不相同,则开发成本和开发效率会显著提高。MongoDB是一种具有高性能、高度伸缩性的非关系型数据库,适合存储大数据量及实时读写,是常用的数据库之一。但是,它的操作语法不是标准的SQL语法,当需要同时对MongoDB和其它使用标准SQL语法的数据库进行开发时,需要开发两套代码,大大降低了开发效率;同时,在行业内也没有相应的稳定驱动可供使用。
针对上述问题,亟需一种按标准SQL语法操作MongoDB数据库的驱动系统,来提高MongoDB开发效率。
发明内容
本发明的目的在于克服上述一种或多种现有的技术问题,提供一种基于SQL操作MongoDB数据库的方法。
为实现上述目的,本发明提供的一种基于SQL操作MongoDB数据库的方法,包括:
根据资源的请求路径获得目标资源的地址以及附加参数信息;
基于目标资源的地址判断目标资源是否存在且有权访问;
在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
根据SQL查询语句获得查询对象和操作参数;
根据查询对象和操作参数生成业务处理器;
业务处理器在MongoDB数据库上执行操作,并将执行结果转换为JSON对象返回。
根据本发明的一个方面,根据资源的请求路径获得目标资源的地址以及附加参数信息包括:
获取请求中包含的目标地址,在目标地址为空或者请求的资源不属于目标数据库时,返回错误信息;
在目标地址不为空且请求的资源属于目标数据库时,对目标地址外的其他参数进行解析,获得附加参数信息。
根据本发明的一个方面,基于目标资源的地址判断目标资源是否存在且有权访问具体包括:
获取目标资源对应的MongoDB数据库,根据附加参数信息中的用户信息获得用户的权限,根据附加参数中的操作参数获得用户是否对目标具有操作权限;
在用户有权访问数据库时,为资源请求操作配置访问账户。
根据本发明的一个方面,目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句具体包括:
基于附加参数中的操作生成对应操作的空白SQL,通过资源映射将附加参数信息内的目标资源转换为SQL语句中的数据库和表,根据访问资源的类别生成SQL中的字段。
根据本发明的一个方面,根据SQL查询语句获得查询对象包括:
对SQL语句进行转换,获得转换后的查询对象,基于附加参数信息对因类型转换引起的查询对象的赋值错误进行修正,获得查询对象。
根据本发明的一个方面,根据查询对象生成业务处理器具体包括:
根据生成的查询对象生成MongoDB的查询语句或者基于MongoDB操作API生成可执行的代码。
根据本发明的一个方面,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果按照参数指定的排序生成JSON;
在业务处理器执行删除操作时,根据删除操作所涉及文档的数目生成结果JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
根据本发明的一个方面,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果转换为结果集,将结果集按照参数指定的排序生成JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
为实现上述目的,本发明提供一种基于SQL操作MongoDB数据库的装置,包括:
请求分析单元,用于根据资源的请求路径获得目标资源的地址以及附加参数信息,以及基于用户基于目标资源的地址判断目标资源是否存在且有权访问;
SQL语句构建单元,用于在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
业务处理器生成单元,根据SQL查询语句获得查询对象和操作参数,以及根据查询对象和操作参数生成业务处理器;
执行反馈单元,用于根据业务处理器执行操作,并将执行结果转换为JSON对象返回。
基于此,本发明的有益效果在于:
MongoDB的操作语法不是标准的SQL语法,本发明提供的驱动系统,可以使用标准SQL对MongoDB进行开发,尤其是在一套系统中涉及多种数据库的情况下,可以做到将MongoDB和其它数据库进行统一开发管理,能降低开发成本,提高开发效率。
附图说明
图1是本发明一种基于SQL操作MongoDB数据库的方法的流程图;
图2是本发明实施例的一种按标准SQL语法操作MongoDB数据库的驱动系统的结构示意图。
具体实施方式
现在将参照示例性实施例来论述本发明的内容,应当理解,论述的实施例仅是为了使得本领域普通技术人员能够更好地理解且因此实现本发明的内容,而不是暗示对本发明的范围的任何限制。
如本文中所使用的,术语“包括”及其变体要被解读为意味着“包括但不限于”的开放式术语。术语“基于”要被解读为“至少部分地基于”,术语“一个实施例”和“一种实施例”要被解读为“至少一个实施例”。
请参考图1,其示出了一种基于SQL操作MongoDB数据库的方法,包括:
根据资源的请求路径获得目标资源的地址以及附加参数信息;
基于目标资源的地址判断目标资源是否存在且有权访问;
在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
根据SQL查询语句获得查询对象和操作参数;
根据查询对象和操作参数生成业务处理器;
业务处理器在MongoDB数据库上执行操作,并将执行结果转换为JSON对象返回。
本发明中,资源请求的发起可以通过多种方式进行,例如通过HTTP、WebSocket等连接方式发起,其发起可以通过浏览器、客户端软件、APP等多种形式。
资源的请求路径包含用户所请求资源的地址,以及附加参数,附加参数可以包括用户的令牌、操作符、参数信息和数据信息;
用户令牌可以用于鉴权,用于判断用户是否可以合法接入目标数据库资源,以及用户对于数据库和数据表的权限;数据库的权限包括创建、更新、删除和插入的权限,可以进一步的针对具体的键设置更新权限;
上述的鉴权过程也可以通过网络环境以及用户提供的其他凭据进行,例如基于网络环境进行鉴权。
此阶段中,如果用户不具备对目标资源的操作权限或者目标资源不存在,则可以退出访问进程。
如果用户有权访问特定资源,则可以基于此生成SQL语句,此种方式可以通过一个标准的中间数据结构来实现对于多种架构的兼容性。
在获得SQL语句后,可以将SQL语句依据目标数据库的格式生成对应的代码或者执行器,并执行,并根据执行结果向用户返回数据,从而实现基于SQL操作MongoDB数据库。
本发明一些技术内容相关的内容请参考https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/module-su mmary.html、https://docs.oracle.com/javase/8/docs/api/和https://www.mongodb.com/docs/drivers/java/sync/current/。
根据本发明的一个实施例,根据资源的请求路径获得目标资源的地址以及附加参数信息包括:
获取请求中包含的目标地址,在目标地址为空或者请求的资源不属于目标数据库时,返回错误信息;
在目标地址不为空且请求的资源属于目标数据库时,对目标地址外的其他参数进行解析,获得附加参数信息。
此过程中,如果用户对于目标数据没有权限,或者目标数据库为空,或者目标数据表不存在于目标数据库,或者用户不拥有对于目标数据库的权限,则应当返回错误信息;并且仅应在用户请求合法的情况下对资源进行访问。
参数的解析可以在鉴权后进行,如果鉴权策略涉及到数据库的具体参数,则可以在鉴权前对参数进行解析。
此外,资源的请求路径中包含的目标地址可以为实际地址或者为实际地址的别称,使用别称或者基于服务器侧映射可以避免实际的资源地址泄露。
根据本发明的一个实施例,基于目标资源的地址判断目标资源是否存在且有权访问具体包括:
获取目标资源对应的MongoDB数据库,根据附加参数信息中的用户信息获得用户的权限,根据附加参数中的操作参数获得用户是否对目标具有操作权限;
在用户有权访问数据库时,为资源请求操作配置访问账户。
本发明中,使用SQL语句作为中间件来进行操作,为了进一步提高安全性能,可以通过对附加参数进行解析,进一步判断用户是否具有操作响应字段的权限,进而实现对数据表列级权限的区分,以实现常规的CRUD(Create,Retrive,Update,Delete)操作的授权区分。
根据本发明的一个实施例,目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句具体包括:
基于附加参数中的操作生成对应操作的空白SQL,通过资源映射将附加参数信息内的目标资源转换为SQL语句中的数据库和表,根据访问资源的类别生成SQL中的字段。
例如,执行获取数据操作时,已经设置上下文对应的表名称为tableName,并且配置参数和查询,例如"columnA=A&columnB=B&columnC=C"为查询,预期结果字段对应的参数为"resultFields=fieldA,fieldB,fieldC,fieldD,fieldE",则生成的实际SQL可能为
select
fieldA,fieldB,fieldC,fieldD,fieldE
from databaseName.tableName
where columnA='A'&columnB='B'&columnC='C'
近似的,可以产生如CREATE、UPDATE和DELETE操作关联的SQL语句。
本发明产生的SQL语句为标准SQL语句,其也可以是符合SQLServer、MySQL或者其他关系型数据库兼容的SQL语句。数据库存在差异时,其查询语法会存在差异,但是通过JDBC均可以实现数据的查询和更新,而本发明通过实现接口java.sql.Connection来实现对于MongoDB的兼容,其需要实现如https://docs.oracle.com/en/java/javase/11/docs/api/java.sql/java/sql/Connection.html所列出的该接口所应当实现的对象。
由于需要将MongoDB作为和SQL数据类一致的使用,因此需要基于对于接口的实现来执行MongoDB数据库的连接。
本发明的一个实施例中,结合使用了java.sql、org.mongodb.mongo-java-driver(下文简称为mongo-java-driver)、net.sf.jsqlparser(下文简称为jsqlparser)等,java.sql主要使用JDBC框架,mongo-java-driver主要用于操作MongoDB数据库,jsqlparser主要用于解析标准SQL语句。
如图2所示,其中,获取数据库连接110,用于获取到MongoDB的数据库连接。
在本实施例中,实现了java.sql.Connection方法,用于将MongoDB的url地址解析,并且与MongoDB数据库建立连接。
为了实现此功能,除对Connection进行实现外,还需要实现java.sql.Driver接口,在具体的实现java.sql.Driver的连接类中,可以基于DriverManager.getConnection(String url,String user,String password)以及Driver.connect(String url,Properties info)来实现连接MongoDB。
根据本发明的一个实施例,根据SQL查询语句获得查询对象包括:
对SQL语句进行转换,获得转换后的查询对象,基于附加参数信息对因类型转换引起的查询对象的赋值错误进行修正,获得查询对象。
本步骤中,需要对字段类型进行验证,例如数据库内的部分字段是浮点数,或者编码和用户传入的参数存在差异,则需要对编码或者数值的赋值进行验证,以避免精度的丢失或者乱码的出现。
根据本发明的一个实施例,根据查询对象生成业务处理器具体包括:
根据生成的查询对象生成MongoDB的查询语句或者基于MongoDB操作API生成可执行的代码。
本实施例具体实施过程中使用了JAVA操作语言,结合使用了java.sql、org.mongodb.mongo-java-driver(下文简称为mongo-java-driver)、net.sf.jsqlparser(下文简称为jsqlparser)等,java.sql主要使用JDBC框架,mongo-java-driver主要用于操作MongoDB数据库,jsqlparser主要用于解析标准SQL语句。
其中,获取数据库连接110,用于获取到MongoDB的数据库连接。
在本实施例中,实现了java.sql.Connection方法,用于将MongoDB的url地址解析,并且与MongoDB数据库建立连接。
标准SQL解析120,在本实施例中,主要使用jsqlparser,将标准SQL按关键字解析成多个部分。具体来讲:
对于标准数据查询SQL语句,将其解析成为查询字段、表对象、查询条件、聚合项、聚合条件、分页、排序等。
对于标准数据插入SQL语句,将其解析为表对象、插入字段和插入数据等。
对于标准数据更新SQL语句,将其解析为表对象、更新字段和更新数据等。
对于标准数据删除SQL语句,将其解析为表对象、删除条件等。
标准SQL转换130,主要是将已经被解析好的各个部分转换为操作MongoDB数据库的程序。在本实施例中,是将解析好的标准SQL的各个部分转换为mongo-java-driver提供的实体,并使用mongo-java-driver提供的API将其组合起来,形成对MongoDB操作的代码。具体来讲:
对于标准数据查询SQL语句,将查询字段、聚合项、表对象、分页、排序、查询条件、聚合条件等转换后分别放入不同对象,使用mongo-java-driver提供了的API来组合各个部分,形成从MongoDB中查询数据的程序。对于查询字段和表对象,需要注意对别名的处理;对于查询条件和聚合条件的处理,需要注意对复杂条件的组合,还应该注意数据类型的转换。
对于标准数据插入SQL语句,将每条数据的字段和其对应的值作为键值对,存入到mongo-java-driver提供的Document对象,一条数据对应一个Document对象,多条数据对应一个List<Document>对象。同时,mongo-java-driver提供了插入一条数据和批量插入数据的API。
对于标准数据更新SQL语句,将每条数据的字段和其对应的值作为键值对,存入到mongo-java-driver提供的Document对象,一条数据对应一个Document对象,多条数据对应一个List<Document>对象。同时,mongo-java-driver提供了更新一条数据和批量更新数据的API。
对于标准数据删除SQL语句,将删除条件放入一个mongo-java-driver提供的对象中,使用mongo-java-driver提供的删除API操作对象,达到删除的目的。
根据本发明的一个实施例,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果按照参数指定的排序生成JSON;
在业务处理器执行删除操作时,根据删除操作所涉及文档的数目生成结果JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
本实施例中对已经转换、编写好的操作MongoDB的程序进行执行。在本实施例中,主要实现了java.sql.PreparedStatement和java.sql.Statement中的一些方法。具体来讲:
对于数据查询,主要实现executeQuery方法,在里面调用标准SQL转换130中查询数据的程序;
对于数据插入,主要实现execute方法用于插入一条数据,实现addBatch方法用于批量插入,在里面调用标准SQL转换130中插入数据的程序;
对于数据更新,主要实现executeUpdate方法,在里面调用标准SQL转换130中更新数据的程序;
对于数据删除,主要实现execute方法,在里面调用标准SQL转换130中删除数据的程序。
最后执行操作程序140。
出上述所实现的方法之外,还实现了与之相关联的一系列其它方法。
数据读取转换150,主要是将程序执行所返回的数据集进行转换,得到想要的结果。在实施例中,具体来讲:
对于数据查询,所返回的是Document的可迭代对象,需要将其转换为JSON对象,并返回。
对于数据插入,没有返回值,或者返回插入的行数。
对于数据更新,返回的是UpdateResult对象,可从中提取到匹配行数、操作行数等信息。
对于数据删除,返回的是DeleteResult对象,可从中提取到删除行数等信息。
在完成上述的过程后,可以关闭资源对象160,释放连接资源。
根据本发明的一个实施例,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果转换为结果集,将结果集按照参数指定的排序生成JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
已经转换、编写好的操作MongoDB的程序进行执行。在本实施例中,主要实现了java.sql.PreparedStatement和java.sql.Statement中的一些方法。具体来讲:
对于数据查询,主要实现executeQuery方法,在里面调用标准SQL转换130中查询数据的程序;
对于数据插入,主要实现execute方法用于插入一条数据,实现addBatch方法用于批量插入,在里面调用标准SQL转换130中插入数据的程序;
对于数据更新,主要实现executeUpdate方法,在里面调用标准SQL转换130中更新数据的程序;
对于数据删除,主要实现execute方法,在里面调用标准SQL转换130中删除数据的程序。
出上述所实现的方法之外,还实现了与之相关联的一系列其它方法。
数据读取转换150,主要是将程序执行所返回的数据集进行转换,得到想要的结果。在实施例中,具体来讲:
对于数据查询,所返回的是Document的可迭代对象,需要将其转换为java.sql的ResultSet。
对于数据插入,没有返回值。
对于数据更新,返回的是UpdateResult对象,可从中提取到匹配行数、操作行数等信息。
对于数据删除,返回的是DeleteResult对象,可从中提取到删除行数等信息。
关闭资源对象160,主要是关闭、释放连接资源。
根据本发明的一个实施例,基于SQL操作MongoDB数据库的装置,其特征在于,包括:
请求分析单元,用于根据资源的请求路径获得目标资源的地址以及附加参数信息,以及基于用户基于目标资源的地址判断目标资源是否存在且有权访问;
SQL语句构建单元,用于在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
业务处理器生成单元,根据SQL查询语句获得查询对象和操作参数,以及根据查询对象和操作参数生成业务处理器;
执行反馈单元,用于根据业务处理器执行操作,并将执行结果转换为JSON对象返回。
基于此,本发明的有益效果在于,MongoDB的操作语法不是标准的SQL语法,本发明提供的驱动系统,可以使用标准SQL对MongoDB进行开发,尤其是在一套系统中涉及多种数据库的情况下,可以做到将MongoDB和其它数据库进行统一开发管理,能降低开发成本,提高开发效率。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的模块及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。
另外,在本发明实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例节能信号发送/接收的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
应理解,本发明的发明内容及实施例中各步骤的序号的大小并不绝对意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
Claims (9)
1.一种基于SQL操作MongoDB数据库的方法,其特征在于,包括:
根据资源的请求路径获得目标资源的地址以及附加参数信息;
基于目标资源的地址判断目标资源是否存在且有权访问;
在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
根据SQL查询语句获得查询对象和操作参数;
根据查询对象和操作参数生成业务处理器;
业务处理器在MongoDB数据库上执行操作,并将执行结果转换为JSON对象返回。
2.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,根据资源的请求路径获得目标资源的地址以及附加参数信息包括:
获取请求中包含的目标地址,在目标地址为空或者请求的资源不属于目标数据库时,返回错误信息;
在目标地址不为空且请求的资源属于目标数据库时,对目标地址外的其他参数进行解析,获得附加参数信息。
3.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,基于目标资源的地址判断目标资源是否存在且有权访问具体包括:
获取目标资源对应的MongoDB数据库,根据附加参数信息中的用户信息获得用户的权限,根据附加参数中的操作参数获得用户是否对目标具有操作权限;
在用户有权访问数据库时,为资源请求操作配置访问账户。
4.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句具体包括:
基于附加参数中的操作生成对应操作的空白SQL,通过资源映射将附加参数信息内的目标资源转换为SQL语句中的数据库和表,根据访问资源的类别生成SQL中的字段。
5.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,根据SQL查询语句获得查询对象包括:
对SQL语句进行转换,获得转换后的查询对象,基于附加参数信息对因类型转换引起的查询对象的赋值错误进行修正,获得查询对象。
6.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,根据查询对象生成业务处理器具体包括:
根据生成的查询对象生成MongoDB的查询语句或者基于MongoDB操作API生成可执行的代码。
7.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果按照参数指定的排序生成JSON;
在业务处理器执行删除操作时,根据删除操作所涉及文档的数目生成结果JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
8.如权利要求1所述的一种基于SQL操作MongoDB数据库的方法,其特征在于,业务处理器执行操作,并将执行结果转换为JSON对象返回具体包括:
在业务处理器执行选择操作时,根据返回的结果转换为结果集,将结果集按照参数指定的排序生成JSON;
在业务处理器执行更新操作时,根据更新操作所涉及文档的数目生成结果JSON;
在业务处理器执行插入操作时,根据插入操作所涉及文档的数目生成结果JSON;
在业务处理器捕获异常时,根据异常操作所涉及的操作参数生成结果JSON。
9.基于SQL操作MongoDB数据库的装置,其特征在于,包括:
请求分析单元,用于根据资源的请求路径获得目标资源的地址以及附加参数信息,以及基于用户基于目标资源的地址判断目标资源是否存在且有权访问;
SQL语句构建单元,用于在目标资源存在且有权访问时,基于附加参数信息构建SQL查询语句;
业务处理器生成单元,根据SQL查询语句获得查询对象和操作参数,以及根据查询对象和操作参数生成业务处理器;
执行反馈单元,用于根据业务处理器执行操作,并将执行结果转换为JSON对象返回。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310633135.0A CN116775680A (zh) | 2023-05-31 | 2023-05-31 | 一种基于SQL操作MongoDB数据库的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310633135.0A CN116775680A (zh) | 2023-05-31 | 2023-05-31 | 一种基于SQL操作MongoDB数据库的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116775680A true CN116775680A (zh) | 2023-09-19 |
Family
ID=88007252
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310633135.0A Pending CN116775680A (zh) | 2023-05-31 | 2023-05-31 | 一种基于SQL操作MongoDB数据库的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116775680A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933869A (zh) * | 2015-12-30 | 2017-07-07 | 北京京东尚科信息技术有限公司 | 一种操作数据库的方法和装置 |
CN109446252A (zh) * | 2018-09-05 | 2019-03-08 | 中国电力科学研究院有限公司 | 一种用于电网调控的统一访问方法及系统 |
CN110619013A (zh) * | 2019-09-10 | 2019-12-27 | 紫光云技术有限公司 | 一种基于Json对象进行可视化配置的方法 |
CN110795418A (zh) * | 2019-09-23 | 2020-02-14 | 紫光云(南京)数字技术有限公司 | 一种基于json的mongoDB到mysql的数据抽取方法 |
CN111639078A (zh) * | 2020-05-25 | 2020-09-08 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备以及可读存储介质 |
CN113377729A (zh) * | 2021-06-15 | 2021-09-10 | 哈尔滨理工大学 | 一种基于MongoDB知识共享平台系统 |
CN114238379A (zh) * | 2021-12-20 | 2022-03-25 | 浙江太美医疗科技股份有限公司 | 基于sql生成器的报表查询方法和系统 |
-
2023
- 2023-05-31 CN CN202310633135.0A patent/CN116775680A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933869A (zh) * | 2015-12-30 | 2017-07-07 | 北京京东尚科信息技术有限公司 | 一种操作数据库的方法和装置 |
CN109446252A (zh) * | 2018-09-05 | 2019-03-08 | 中国电力科学研究院有限公司 | 一种用于电网调控的统一访问方法及系统 |
CN110619013A (zh) * | 2019-09-10 | 2019-12-27 | 紫光云技术有限公司 | 一种基于Json对象进行可视化配置的方法 |
CN110795418A (zh) * | 2019-09-23 | 2020-02-14 | 紫光云(南京)数字技术有限公司 | 一种基于json的mongoDB到mysql的数据抽取方法 |
CN111639078A (zh) * | 2020-05-25 | 2020-09-08 | 北京百度网讯科技有限公司 | 数据查询方法、装置、电子设备以及可读存储介质 |
CN113377729A (zh) * | 2021-06-15 | 2021-09-10 | 哈尔滨理工大学 | 一种基于MongoDB知识共享平台系统 |
CN114238379A (zh) * | 2021-12-20 | 2022-03-25 | 浙江太美医疗科技股份有限公司 | 基于sql生成器的报表查询方法和系统 |
Non-Patent Citations (2)
Title |
---|
李常青 等: "一种基于ANTLR 的MongoDB 数据库", 《西北工业大学学报》, vol. 35, no. 1, 28 February 2017 (2017-02-28), pages 143 - 147 * |
编程小学生哈: "听说你不会Mongo的API?我写个插件用SQL去查Mongo", 《HTTPS://JUEJIN.CN/POST/7104983592182218760》, 3 June 2022 (2022-06-03), pages 1 - 8 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8943100B2 (en) | System and method for storing data in a relational database | |
US9626452B2 (en) | Fine-grained database access-control policy enforcement using reverse queries | |
US8521748B2 (en) | System and method for managing metadata in a relational database | |
US7895226B2 (en) | System and method for translating and executing update requests | |
US9753977B2 (en) | Method and system for managing database | |
US8417690B2 (en) | Automatically avoiding unconstrained cartesian product joins | |
US9135297B2 (en) | Database translation system and method | |
US11194802B2 (en) | Generating SQL queries from declarative queries for semi-structured data | |
US8073843B2 (en) | Mechanism for deferred rewrite of multiple XPath evaluations over binary XML | |
CN108038213A (zh) | 一种数据处理的方法、客户端、服务器及系统 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN114356971A (zh) | 数据处理方法、装置以及系统 | |
US9053207B2 (en) | Adaptive query expression builder for an on-demand data service | |
CN110866028A (zh) | 一种sql指令生成方法及系统 | |
US7908267B2 (en) | Automatic use of a functional index as a primary filter | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN113254519A (zh) | 多源异构数据库的访问方法、装置、设备和存储介质 | |
CN109726213B (zh) | 一种程序代码转换方法、装置、介质和计算设备 | |
CN116775680A (zh) | 一种基于SQL操作MongoDB数据库的方法 | |
CN114817294A (zh) | 数据库访问方法和装置 | |
CN115525671A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN112988798A (zh) | 一种日志处理方法、装置、设备及介质 | |
EP3462339A1 (en) | Method and message handler for processing a query | |
US20240119049A1 (en) | Systems and methods for query validation and query processing | |
CN110968634B (zh) | 大数据场景下基于xml描述实现利用可编程函数式进行etl转换处理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |