在参考文章中,我找到了答案,但我是 MongoDB 的初学者,对于初学者来说,他们的文档并没有得到很好的解释。我也在读克里斯蒂娜的书,所以我在做我的功课。我认为这篇文章可能会帮助其他试图解决这个问题的用户,而不是传统的,我有一个问题,有人发布了一个代码示例,但他们从来没有真正理解发生了什么。
话虽如此,我在下面列出的一些相互关联的事情上遇到了非常艰难的时光,我发现了另一个关于这个问题的好问题和答案,但这只是一些代码,对于 mongo 的初学者来说并没有得到很好的解释。该代码也对我不起作用(http://stackoverflow.com/questions/6414312/fastest-way-to-get-the-average-of-a-specific-field-in-mongodb)。:/
我有一些像这样的文件:
{ "_id" : ObjectId("4fc7e9138c8b0f0d5200000f"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 464, "time" : 1338501393 }
{ "_id" : ObjectId("4fc7e9518c8b0f0d52000015"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 464, "time" : 1338501455 }
{ "_id" : ObjectId("4fc7e98f8c8b0f0d5200001b"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 463, "time" : 1338501517 }
{ "_id" : ObjectId("4fc7e9cd8c8b0f0d52000021"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 464, "time" : 1338501579 }
{ "_id" : ObjectId("4fc7ea0b8c8b0f0d52000027"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 446, "time" : 1338501641 }
{ "_id" : ObjectId("4fc7ea498c8b0f0d5200002d"), "memtotal" : 996, "swaptotal" : 2015, "swapfree" : 2015, "memfree" : 424, "time" : 1338501703 }
我正在尝试获取所有 memfree 元素,然后计算平均值。我尝试根据上面引用的链接复制/粘贴对代码进行编程,首先它在一定程度上是有意义的,其次,它实际上并没有工作。
第 2 行)第一行是有道理的,非常不言自明的第 3 行)第二行计数:0,总计:0 - 这些是真/假开关吗?第 4 行)这是从 mapReduce() 函数调用相同的 reduce 吗?是 doc 和 out 关键字,还是我们任意定义它们?其他)代码还是失败了,为什么?
最后一个子问题:我可以使用 mapReduce 做同样的事情吗?为什么我要使用 mapReduce 函数而不是一个组,如果我有碎片,我还需要计算平均值?