在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,你还不如保存结果。
剩下的是replace
、reduce
和merge
(此处列出的选项)。
它实际上是非常静态的,还是我必须在自己的应用程序层中实现为缓存?
Map/Reduce的输出只是一个集合。该集合具有特定的格式(_id
、value
),但与其他集合一样,它也是一个可查询的集合。
如果你想每10分钟覆盖一次摘要数据,你可以这样做。但是,这意味着你必须对所有数据运行Map/Reduce。这可能代表日志系统中的大量工作。
相反,您可能希望只对数据的新部分运行M/R,然后对现有的摘要数据进行"重新减少"。这将是最快的。