使用MongoDB Aggregation Framework定制管道运营商

时间:2012-11-28 18:40:40

标签: mongodb aggregation-framework

实际上,我使用map reduce来进行一些计算。 我不能用聚合框架做到这一点,因为我的计算没有可用的管道运算符。

是否可以编写自定义管道运算符?

提前致谢

1 个答案:

答案 0 :(得分:8)

答案取决于您对“可能”的定义:

1)开箱即用:否。

与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

例如,已经存在诸如以下的请求: