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

hot*_*ips 5 mongodb aggregation-framework

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

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

提前致谢

Ste*_*nie 8

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

1)开箱即用:没有.

与MongoDB 2.2一样,没有最终用户功能允许您添加新的管道运算符.聚合框架和管道运算符在C++中实现,以提高早期聚合选项(如MapReduce(在JavaScript中实现))的性能和并发性.

2)如果你想用C++写一个:YES(但不是琐碎的).

MongoDB是一个开源项目,因此您可以选择深入了解C++代码并自己实现其他功能(请参阅:) src/mongo/db/pipeline.请注意,有关于为MongoDB项目贡献的准则,并且正在进行的开发非常活跃.

如果您想编写自定义函数,目前最好的选择是继续使用MapReduce.

无论上述选项如何,如果您希望看到管道运算符或功能,请在MongoDB Jira SERVER项目(组件:)中进行建议Aggregation Framework.这将允许其他人对功能请求进行评论,观看和投票.如果您最终自己最终实现该功能,则可以在您的请求中引用Jira功能描述.在提交新功能请求之前,您还应该搜索是否已经建议此功能.

例如,已经有如下请求: