我必須在Python中創建腳本,其中參數具有第一個集合的名稱和第二個集合的名稱(db中的MongoDB集合)。我需要在這兩個集合之間對一些傳入的字段名稱執行JOIN(我不知道集合的結構並且需要足夠通用)。我查看了像Ming,MongoKit,MongoAlchemy,MongoEngine和minimongo的ORMs http://api.mongodb.org/python/current/tools.html#orm-like-layers 有沒有人有任何這些ORM和JOINS的經驗,有任何建議,例子?需要ORM for JOIN MongoDB集合
回答
MongoDB映射器/ ORM解決方案不太可能允許JOIN類行爲,因爲它是與關係數據庫關聯的功能,並且在基於NoSQL的ORM中沒有位置(例如,在MongoDB中沒有辦法一致地執行它們)。坦率地說,如果ORM爲你實現JOIN行爲,我可能會認爲它是一個設計缺陷。
什麼阻止你在py腳本中自己實現所需的功能?
收藏非常大,所以我害怕留下沒有記憶。我可以大概做到這一點,但它會很慢,我諷刺說,有可能是更優雅的解決方案 – Damir 2012-03-20 10:16:11
如果使用非關係數據庫的東西聲稱是ORM,我會非常懷疑從作者開始不知道「ORM」中的「R」代表什麼。 – geoffspear 2012-03-20 10:21:28
@達米爾你不必首先閱讀內存中的所有東西。分批進行。根據內存使用情況,映射器可以做些什麼,而不是? – 2012-03-20 10:28:42
A加入不是你要找的,因爲你不能真正加入。通常在驅動程序或ORM/ODM(例如Morphia for Java和Mongoid for Ruby)中可用的是Reference,其中有一個ID或ID列表指向另一個集合中的對象。然後,通常需要一個輔助函數來取消引用(對參考運行另一個查詢),以便您可以將該包含的對象帶回來,而無需明確執行。
python驅動程序中實際上有一個功能,可以自動完成此功能。這裏是一個例子(更新到單元測試 - 其他例子是舊的): https://github.com/mongodb/mongo-python-driver/blob/master/test/test_dbref.py
- 1. 我是否需要使用AppCompatActivity for Android M
- 2. MongoDB MapReduce不需要返回整個集合
- 3. 需要事件集合類
- 4. 是否需要集合?
- 5. MongoDB中 - 集合
- 6. LINQ JOIN集合中的集合
- 7. Mongodb聚合集合
- 8. Mongodb PHP備份集合
- 9. mongodb集合
- 10. 需要MongoDB的
- 11. Mongodb鏈接集合
- 12. MongoDb封頂集合
- 13. MongoDB - 等價的LEFT JOIN,其中一個集合不存在
- 14. 需要幫助DATE_FORMAT(p.date,'%Y-%m-%d')= CURDATE()
- 15. 執行SQL JOIN需要長
- 16. BasicDBList到集合MongoDB
- 17. 算法覆蓋M的子集與M的組合k的集合
- 18. 鏈接MongoDB集合
- 19. MongoDB聚合投影集合
- 20. php 7 mongodb集合插入
- 21. MongoDB描述集合
- 22. mongodb集合變空
- 23. MongoDB更新集合
- 24. 瞭解mongodb集合
- 25. 查詢MongoDB中的一個集合;但需要對架構對象
- 26. MongoDB的集合格式
- 27. MongoDB多個集合更新
- 28. 需要Bootstrap的大集合,但需要更多的靈活性
- 29. 需要info for preg_match_all
- 30. 無法過濾MongoDB集合
我想你可能不得不看看記錄之間有直接聯繫的NoSQL解決方案:Riak和像Neo4j這樣的圖形數據庫。但是,當你字面意思是「不知道收藏的結構」時,他們不會幫助。_ – aitchnyu 2012-03-20 10:52:15