使用Mongodb和mapreduce创建一个包含子项的列表



在MongoDB中存储一些日志数据。现在,我需要获取集合中实际存储的日志类型的列表。

我有一个这样的文件:(假设可以是每个和更多的组和子组的千个)

{
  "Group": "Import",
  "SubGroup": "Update server"
},{
  "Group": "Import",
  "SubGroup": "Delete server"
}

我想最终得到这样的东西:

{
  "Group": "Import",
  "SubGroups": ["Delete server", "Update server"]
}

但由于每个子群可能会有更多,我想要任何重复。。。javascript有类似于HashKey集的东西吗。。。这里不是什么js专家。

我将把它用于gui,这样用户就可以选择他想要查看的日志类型。

作为一个附带问题。由于Mapreduce和输出类型可以是内联的,所以替换和reduce。有没有简单的方法内置到MongoDB中,所以我可以告诉它每x分钟只更新一次MapReduce,因为它实际上是非常静态的,或者它是我必须在自己的应用层中作为缓存实现的?

javascript有类似于HashKey集的东西吗

因此javascript中的所有内容都是哈希表。这样存储结果,您就可以获得具有相同语义的哈希:

{
  "Group": "Import",
  "SubGroups": { "Delete server": 1, "Update server": 1 }
}

由于Mapreduce和输出类型可以是内联的,所以替换和reduce。

我个人的建议是避免inline。如果你要花这么多精力来运行Map/Reduce,你还不如保存结果。

剩下的是replacereducemerge(此处列出的选项)。

它实际上是非常静态的,还是我必须在自己的应用程序层中实现为缓存?

Map/Reduce的输出只是一个集合。该集合具有特定的格式(_idvalue),但与其他集合一样,它也是一个可查询的集合。

如果你想每10分钟覆盖一次摘要数据,你可以这样做。但是,这意味着你必须对所有数据运行Map/Reduce。这可能代表日志系统中的大量工作。

相反,您可能希望只对数据的新部分运行M/R,然后对现有的摘要数据进行"重新减少"。这将是最快的。

相关内容

  • 没有找到相关文章

最新更新