在Mongodb的Mapreduce中,在我認爲在map函數內部可以訪問「db」(如db.anotherCollection.find())對象之前。但是這個功能已經被刪除(從版本1.6開始),這在加入時很困難。是什麼原因?爲什麼它被刪除?爲什麼在Mongodb的Mapreduce中無法通過map函數訪問db對象?
0
A
回答
1
截至MongoDB的2.4有幾個原因,以禁止訪問db
對象從地圖內/縮小功能,包括:
死鎖:有數據庫和/或JavaScript鎖之間潛在的死鎖情況被稱爲來自同一個服務器端的功能。
性能:Map/Reduce模式多次調用
reduce()
;每次迭代都是不同的JavaScript上下文,並且必須打開數據庫的新連接併爲查詢結果分配額外的內存。長時間運行的JavaScript操作將阻止其他操作。安全性:跨數據庫查詢需要適當的身份驗證檢查。
對於Map/Reduce作業讀取或寫入分片集羣,上述問題可能會變得更加複雜。 MongoDB Map/Reduce實現目前只設計用於處理來自單個輸入集合的數據,並且在Map/Reduce函數中的任何歷史濫用對象都應被視爲錯誤而不是功能。
如果要將數據與Map/Reduce合併,可以使用Incremental Map/Reduce。根據您嘗試實現的結果,還有其他方法可能更直接,例如調整模式或通過多個查詢在應用程序代碼中進行連接。
相關問題
- 1. 如何在MongoDB MapReduce的map函數中訪問this._id?
- 2. 爲什麼在使用jQuery時無法通過窗口對象訪問對象?
- 3. 爲什麼我們無法通過::中的對象訪問方法perl
- 4. 爲什麼mvc無法通過對象
- 5. 無法訪問函數中的對象
- 6. 訪問MongoDB中的關聯數組/對象MapReduce
- 7. 通過函數訪問對象值
- 8. 通過對象訪問成員函數
- 9. 爲什麼我無法通過mxml中的id訪問標籤?
- 10. 爲什麼我無法通過Python中的鍵訪問列表?
- 11. 爲什麼我無法訪問javascript中的對象屬性?
- 12. 爲什麼我無法訪問javascript中的對象值
- 13. 如何在MapReduce MongoDB中訪問emebed對象?
- 14. 爲什麼我無法通過Java訪問遠程數據庫?
- 15. 爲什麼我無法循環訪問數組對象
- 16. 通過對象數組訪問對象
- 17. 爲什麼我無法通過_id在mongodb中找到記錄
- 18. 爲什麼我無法通過typeglob訪問詞法變量?
- 19. 爲什麼使用MongoDB中的MapReduce
- 20. 在mapreduce中對map函數中的鍵值對進行排序
- 21. System.ObjectDisposedException:無法訪問已處理的對象 - 爲什麼發生?
- 22. 爲什麼我無法訪問HTML div/jQuery對象的屬性?
- 23. 在javascript函數中通過EL訪問模型對象?
- 24. 在MapReduce中,爲什麼map函數在查找單詞出現時輸出1?
- 25. 爲什麼我無法通過表名訪問數據集中的表?
- 26. 爲什麼我無法通過腳本訪問HingeJoint2D?
- 27. 爲什麼無法通過公共IP訪問服務器
- 28. 爲什麼我無法循環訪問這個SimpleXML對象?
- 29. 爲什麼$ db PDO對象在構造函數參數中作爲null傳遞?
- 30. MapReduce函數MongoDB NodeJs
由於安全問題,再加上它永遠不是一個好主意。還有MR通過JOIN?請不要嘗試 – Sammaye