6

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

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

提前致谢

4

1 回答 1

9

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

1) 开箱即用:否。

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

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

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

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

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

例如,已经有如下请求:

于 2012-11-28T20:00:34.687 回答