我正在试图弄清楚如何用Mongo做点什么并没什么成功。
我正在使用maReduce函数来总结我正在处理的项目的电源使用情况。我按照帐户总结了它。
我每小时都会记录一个集合中每个帐户的耗电量,并使用map reduce函数生成另一个看起来像这样的集合:
{
_id: (account_id)
value: {watts: (sum of all watts in existence in other collection)}
}
我现在也使用mapReduce对它进行增量添加,这样我就可以每小时添加一次这个聚合,而不是每次重新计算。
我想知道的是如何朗读某些东西,以便我可以计算当前年份的瓦特用量,并将其插入每个文档中的值对象中。当然,我想为每个帐户执行此操作。
我知道如何通过mapReduce收集数据,以生成如下文档:
{
_id: (account_id)
value: {watts_this_year: some_num}
}
我只是不确定如何将它合并到我制作的收藏中。
我想合并它们看起来像:
{
_id: (account_id)
value: {watts_this_year: some_num, watts: (sum of all watts in existence in other collection)}
}
我是否清楚地表达了自己的意见?如果我能做些什么可以让我的问题更清楚,请告诉我。
谢谢!
答案 0 :(得分:0)
MapReduce不适用于增量更新。这是一个一次性工具,用于流失大量数据并返回结果。我实际上建议你看看使用聚合框架是否足够快,以便实时执行此操作。它比M / R快很多。
例如,您的上述示例将使用以下对聚合的调用来表示:
db.collName.aggregate( { $group: { '_id': '$_id', watts: { $sum: '$watts' } } } );
A / F比M / R更快,因为它在C中实现并且可以运行并发作业。目前的一个缺点是,它不会将结果输出到新的集合,但目前正在进行处理:https://jira.mongodb.org/browse/SERVER-3253