mongodb's mapreduce

mapReduce可是实现增量的计算,但是它有以下问题:
1. 使用javascript写成,不便于debug
2. 帮助很少
3. 性能不如aggregate
4. 你可以在mongo shell中使用
- interpreterVersion() ordb.serverBuildInfo()
- 来获得mongo的 javascriptEngine
5. 在3.2中,javascript的执行引擎是 MozJS-38(mozjs)

以下测试数据时在3.4的Java driver测试的,测试数据的格式如下:

> db.test_1.findOne()
{
        "_id" : ObjectId("599d2107faa2eca315046852"),
        "test_name" : "test_name0",
        "value" : 79.39512182533956,
        "site" : 1
}

collection row count | mapreduce with jsMode = true | mapreduce with
jsMode = false | aggregate
—|—|—|—
5000000 | 650425 | 646297 | 4226
10000 | 2260 | 2628 | 50

time unit is milliseconds
https://docs.mongodb.com/manual/tutorial/perform-incremental-map-reduce/
https://docs.mongodb.com/ecosystem/use-cases/hierarchical-aggregation/