首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在mongo中分层存储MapReduce结果

如何在mongo中分层存储MapReduce结果
EN

Stack Overflow用户
提问于 2014-01-04 00:09:27
回答 1查看 149关注 0票数 0

我想要对一些指标执行map-reduce操作,并希望存储其聚合和时间序列的结果。

存储聚合结果似乎非常简单,但如何以时间序列的方式存储结果,即每当map-reduce函数运行时,该时间间隔的值也应该记录在结果集合中。(即时间序列数据)

假设我的map-reduce聚合中有以下结果:

代码语言:javascript
复制
> db.result.find()
{ "_id" : { "eventId" : 1}, "value" : { "sum" : 21 } }
{ "_id" : { "eventId" : 2}, "value" : { "sum" : 31 } }

使用map_reduce聚合框架,我可以很容易地实现上述目标。

我希望结果也存储在时间序列中,如下所示:

代码语言:javascript
复制
> db.result.find()
    { "_id" : { "eventId" : 1}, "value" : { "sum" : 21, "ts": {1: 15, 2: 4, 3: 2  } } }
    { "_id" : { "eventId" : 2}, "value" : { "sum" : 31, "ts": {1: 12, 2: 12, 3: 7 } } }

现在,只要map-reduce函数运行,它就应该更新结果集合。

我尝试了很多方法,但都不能成功。你知道我怎么才能做到吗?

此外,如果在相同的map-reduce函数调用下也能做到这一点,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2014-01-04 01:40:05

这类时间序列数据的一般建议是使用pre-aggregated reports

如果这是不可能的,首先考虑使用aggregation pipeline而不是map-reduce。如果你的用例允许,它会变得更快更容易。

使用聚合管道和map-reduce,您可以使用结果创建所需的文档。setOnInsert可能会有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20907895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档