实际上,我使用map reduce来进行一些计算。 我不能用聚合框架做到这一点,因为我的计算没有可用的管道运算符。
是否可以编写自定义管道运算符?
提前致谢
答案 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。
例如,已经存在诸如以下的请求: