实现 MongoDB 连接运算

浏览: 1254

来源:http://stackoverflow.com/questions/29396985/is-there-a-where-like-relation-function-when-using-pymongo

摘要
        早期的 Mongodb 版本没有 $lookup 接口来实现连接运算,或使用 $lookup 来实现连接运算比较麻烦时,集算器 SPL 语言实现了对多个文档不同类型的连接运算,对 Mongodb 提供了便利的技术。若想了解更多,请前往乾学院:实现 MongoDB 连接运算!


         多表关联查询在数据库应用中比较常见,对于早期的 Mongodb 版本(3.2 版本新增)还没有 $lookup 接口时,即没有直接提供连接运算,硬编码实现有一定难度;或使用 $lookup 来实现连接运算比较麻烦。这种情况下可以用集算器 SPL 语言来实现多个文档的内连接、左连接、全连接、子文档连接,下面用例子来说明。

         文档categories和 rules 在逻辑上是主子关系,关联字段是 cat,需要进行左连接运算,取出 categories 的 title、regex、cat 字段,以及 rules 中相关的 path 字段。部分源数据如下:

image.png

集算器代码:

image.png

         A1:连接MongoDB,连接字格式为mongodb://ip:port/db?arg=value&…
         A2、B2:使用find函数从MongoDB中取数并排序,形成游标。其中A2是被连接的游标,需要按cat排序。
         A3:进行连接运算,关联字段是cat,joinx对游标进行连接,@1表示左连接。
         A4:从A3取出需要的字段,_1和_2依次表示连接中的每个游标。
         A5:取出游标数据,结果如下:

image.png

         需要指出的是,如果数据太大无法装入内存,可以用函数export将A4输出到文件。
         A6:关闭MongoDB连接。

         集算器 SPL 语言不仅支持Mongodb基本的连接运算,也支持更复杂的多表关联运算,可参考相关文章<<简化MongoDB关联运算>>。

推荐 0
本文由 润乾软件 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册