当前位置:  开发笔记 > 数据库 > 正文

使用MongoDB,重新使用Map/Reduce结果的简单方法是什么?

如何解决《使用MongoDB,重新使用Map/Reduce结果的简单方法是什么?》经验,为你挑选了1个好方法。

例如,在进行分析时,可能需要10秒的map/reduce运行.运行后,如果其他网页可以使用该结果,那么每页将节省10秒.

以某种方式缓存map/reduce结果会很好.

可以像map_reduce_result_[timestamp]在db中一样记录成功的map/reduce运行,然后将此时间戳保存db.run_log在MongoDB中.例如,此时间戳是UNIX纪元时间.因此,当其他页面需要访问结果时,它们可以获得最大时间戳,然后只查找存储在MongoDB中的结果.但这样做有点像黑客,并想知道是否有更好的方法来做到这一点.



1> Niels van de..:

您的方法会将每个map-reduce结果保存在单独的集合中.如果您需要访问这些"历史"结果,这很好.

如果您只对最后一个结果感兴趣,则可以使用单个集合作为缓存.您可以使用该out选项指定map-reduce作业的输出集合.

db.collection.mapReduce(map, reduce, { out: "cachedResult" });

永久cachedResult收藏将包含结果.

正如您可以在文档中看到的那样,map-reduce作业在执行时仍将使用临时集合.此临时集合在完成时以原子方式重命名为输出集合.这意味着您可以使用相同的输出集合安全地重新运行map-reduce作业,而不必担心映射减少时的无效缓存.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有