用于在mongodb集合上执行联接的python库

mongojoin的Python项目详细描述


Code Climate

mongojoin:在mongodb中执行类似sql的连接

这是一种尝试,向经常从不同集合获取相关数据的mongodb用户提供类似sql的连接,并提供一个库来组合来自多个集合的数据

mongodb是一个非规范化的数据库,不提供对集合执行“join”操作的方法。

github链接:https://github.com/nimeshkverma/mongo_joins

请随意提出问题并作出贡献。

安装:

要安装软件包,请键入以下内容:

pip install mongojoin

如何使用

1.在python脚本/shell中导入以下内容

>>> from mongojoin.mongojoin import MongoJoin, MongoCollection

2.创建MongoCollection对象(两个要连接的集合各一个)

>>> collection = MongoCollection("db_name","collection_name",["collection_select_key_1", "collection_select_key_2"], {filter_key : filter_value})

r_select_key1,r_select_key2:键,联接后要获取的值对

filter_key:filter_value:用于在执行联接之前聚合数据的筛选器

3.创建一个mongojoin对象来执行连接。

>>> join_object = MongoJoin(collection_left, collection_right, ["join_key_2","join_key_2"])

join_key_1:要对其执行join的键 join_key_2:要对其执行join的键

4.所有连接函数都返回一个defaultdict对象

执行内部联接

>>> result = join_object.inner()

执行左外连接

>>> result = join_object.left_outer()

执行右外连接

>>> result = join_object.right_outer()

执行完全外部联接

>>> result = join_object.full_outer()

示例:

对两个集合执行联接:supplier和order on supplier\u id,结果具有关键字:supplier\u id、名称和数量以及条件supplier\u id==1001

>>> from mongojoin.mongojoin import MongoJoin
>>> from mongojoin.mongojoin import
>>> supplier = MongoCollection("test", "supplier", ["supplier_id", "name"], {"supplier_id": 1001})
>>> order = MongoCollection("test", "order", ["supplier_id", "qty"], {"supplier_id": 1001})
>>> aggregator = MongoJoin(supplier, order, ["supplier_id"])
>>> inner_join_result           = aggregator.inner()
>>> left_outer_join_result      = aggregator.left_outer()
>>> right_outer_join_result     = aggregator.right_outer()
>>> full_outer_join_result      = aggregator.full_outer()

这相当于以下SQL查询:

select supplier.supplier_id,supplier.name,order.supplier_id,order.qty from supplier join order on supplier.supplier_id=order.supplier_id=1001 and order.supplier_id=1001

如果您有任何疑问,请告诉我们-

nimesh.aug11@gmail.comutsav.tiwary2011@gmail.com

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
保存一段xml是一个新的xml解析器Java   java如何使用断言测试单链表。assertEquals()   java如何将多个选定图像从Gallery复制到Android中的另一个文件夹   重新触发异常时调用序列中的java差异   swing如何在Java中的GridLayout面板的特定单元格中添加标签?   java在更新引用实体之后,有没有办法更新其他实体中的列?   java如何在两个实体之间使用foreach   java方法add(Component)不适用于参数   Apache Tiles和Spring MVC中的java全局异常页面   java kSoap2发送集合   Java存储对象与直接调用其方法的性能对比?   java如何访问selenium中的nowrap元素   使用endpointsframeworktools生成OpenAPI文档时发生java错误   西/东方向的java JLabel不会显示在BorderLayout中   java ActiveMQ Spring客户端:如何更改处理器池?   java不能取消对void的引用;尝试使用生成器模式   javajavax。websocketclient:如何将大型二进制数据从clientendpoint发送到serverendpoint   运行Java代理时Java代理问题   如何将Web应用程序连接到Java/ABAP应用程序   javajackson处理问题