我尝试用3种方法对数据进行分组:原生js(带下划线),group和Aggregate with $group
我使用these datas(巴黎的流派/位置树)(237 168行,35Mo)
这是我的script test,结果有点令人惊讶!
┌─────────────┬───────────────┐
│ Method │ avg time (ms) │
├─────────────┼───────────────┤
│ Pure js │ 897 │
├─────────────┼───────────────┤
│ Group │ 3863 │
├─────────────┼───────────────┤
│ Aggregation │ 364 │
└─────────────┴───────────────┘
为什么使用group进行分组比聚合慢10倍? 对于什么使用“组”? 我怎样才能再次优化我的要求?
感谢。
答案 0 :(得分:1)
组命令使用与mapreduce相同的框架,并且有许多资源可以解释为什么MR比聚合框架慢。主要的是它在一个单独的JS线程中运行,其中agg框架在服务器上本机运行。
请参阅此处的详细信息MongoDB aggregation comparison: group(), $group and MapReduce