我必须在 Python 中创建脚本,其参数具有第一个集合的名称和第二个集合的名称(数据库中的 MongoDB 集合)。我需要在这两个集合之间对一些传递的字段名称执行 JOIN (我不知道集合的结构并且需要足够通用)。我查看了诸如 Ming、MongoKit、MongoAlchemy、MongoEngine 和 minimongo 之类的 ORM http://api.mongodb.org/python/current/tools.html#orm-like-layers 是否有人对这些 ORM 和 JOINS 有任何经验?建议,例子?
问问题
677 次
2 回答
2
MongoDB 映射器/ORM 解决方案不太可能允许类似 JOIN 的行为,因为它是与关系数据库相关的功能,并且在基于 NoSQL 的 ORM 中没有位置(例如,无法在 MongoDB 中始终如一地执行它们)。坦率地说,如果 ORM 确实为您实现了类似 JOIN 的行为,我可能会认为这是一个设计缺陷。
是什么阻止您自己在 py 脚本中实现所请求的功能?
于 2012-03-20T10:12:30.470 回答
1
连接不是您要寻找的,因为您不能真正进行连接。驱动程序或 ORM/ODM(例如用于 Java 的 Morphia 和用于 Ruby 的 Mongoid)中通常可用的是引用,其中您有一个 ID 或 ID 列表,它们指向另一个集合中的对象。然后,通常有一个辅助函数来取消引用(为引用运行另一个查询),这样您就可以带回包含的对象而无需显式执行。
实际上,python 驱动程序中有一个功能可以自动完成。这是一个示例(更新为单元测试——其他示例是旧的): https ://github.com/mongodb/mongo-python-driver/blob/master/test/test_dbref.py
于 2012-03-20T14:20:21.827 回答