2012-11-28 72 views

回答

8

答案將取決於你的 「可能」 的定義:

1)開箱:NO。

在MongoDB 2.2中,沒有最終用戶功能允許您添加新的管道操作員。聚合框架和管道運營商是用C++實現的,用於改進早期聚合選項(如MapReduce(用JavaScript實現))中的性能和併發性。

2)如果你想用C++寫一個:YES(但不是微不足道的)。

MongoDB是一個開源項目,因此您可以選擇跳入C++代碼並自行實現附加功能(請參閱:src/mongo/db/pipeline)。請注意,有關於Contributing to the MongoDB project的指南,並且正在進行的開發非常活躍。

如果要編寫自定義函數,那麼目前最佳選擇是繼續使用MapReduce

無論上述選項如果有管道運營商或功能,你想看看請建議在MongoDB Jira SERVER project(組件:Aggregation Framework)建議。這將允許其他人評論,觀看並對功能請求進行投票。如果您自己最終實現了該功能,則可以在您的請求中引用Jira功能描述。在提交新功能請求之前,您還應該搜索以查看此功能是否有already been suggested

例如,已經有要求,如:

+0

你知道它是否計劃使用官方構建的自定義管道聚合器?謝謝 ! – hotips

+0

聚合框架被設計爲C++中的可擴展(和高性能)..所以用戶定義的管線運營商似乎不太可能匹配。如果您對Jira中的功能請求進行投票,則會將這些內容計入未來版本的規劃中。 Map/Reduce爲數據聚合/操作提供了一個完整的JavaScript解釋器,其折衷是提高效率和性能。有關MongoDB聚合選項的比較,請參閱:[group(),$ group和MapReduce](http://stackoverflow.com/questions/12337319)。 – Stennie