【发布时间】:2012-04-04 00:09:51
【问题描述】:
如何在 Python 中加入(从 SQL 的 INNER JOIN 意义上说)两个 MongoDB 集合?我是否需要使用本机 map/reduce javascript 代码或在 PyMongo 中执行此操作?如何用更少的代码解决这个问题?
【问题讨论】:
标签: python mongodb mapreduce pymongo
如何在 Python 中加入(从 SQL 的 INNER JOIN 意义上说)两个 MongoDB 集合?我是否需要使用本机 map/reduce javascript 代码或在 PyMongo 中执行此操作?如何用更少的代码解决这个问题?
【问题讨论】:
标签: python mongodb mapreduce pymongo
Mongo 以不同于传统关系数据库的方式存储数据,并且不支持在 SQL 数据库中可能使用的表连接。 “数据库参考”文档中有关于此的注释。 http://www.mongodb.org/display/DOCS/Database+References
如果可能,最好将所有数据存储在一个集合中。如果这不可能,则必须对所有数据库执行单独的查询,并以编程方式合并数据。
根据文档,可以直接或使用 db 引用链接单独集合中的文档。仍然必须对每个集合执行单独的查询。
之前有人问过类似的问题。 (我在下面提供了一些链接。)希望这些回复能让您进一步了解数据在 MongoDB 中的存储方式,以及如何重组文档和/或查询,以便用最少的资源检索所需的数据对数据库的请求数。
祝你好运!
How do I perform the SQL Join equivalent in MongoDB?
“关于连接的初学者问题” http://groups.google.com/group/mongodb-user/browse_thread/thread/edfcf8bd270274f9/
【讨论】:
您可以使用MongoJoin。
pip install mongojoin
创建一个 MongoCollection 对象:
collection = MongoCollection("db_name",
"collection_name",
["collection_select_key_1", "collection_select_key_2"],
{filter_key : filter_value})
【讨论】:
MongoDB 版本 4 现在似乎支持 JOIN operation 和运算符 $lookup,您必须调用 inside an aggregation pipeline。
然而,这似乎没有在 pymongo 驱动程序中实现,因为它从 python 脚本中没有产生任何最终意图。
【讨论】: