mongodb map / reduce或group

时间:2012-07-24 10:43:31

标签: mongodb pymongo

我有一个包含候选人详情的mongodb数据

属性是基于列表的资格

doc1:  "qualification" : ["BS","Diploma"]
doc1:  "qualification" : ["BS","MS"]
doc1:  "qualification" : ["PG"]
doc1:  "qualification" : ["Diploma"]
doc1:  "qualification" : ["BS"]
doc1:  "qualification" : ["MS"]
doc1:  "qualification" : ["BS","MS","Phd"]

从此我使用mongodb map / reduce生成了前3个资格,它计算了每个资格的出现次数并且我过滤了前3个

结果是

{"BS":4,"MS":3,"Diploma":2}

但是这个map / reduce每次都会创建一个临时集合,所以我认为它会减慢我的应用程序,我们可以在这个场景中使用group语句吗? 或者当我使用python时,我可以生成一个使用counter()

的所有资格的列表

这是可行的,耗时少吗?

1 个答案:

答案 0 :(得分:1)

  

我们可以在这种情况下使用群组声明吗?

但是,最后一次检查group命令是单线程的,因此在分片配置上可能会很慢。

您还可以查看2.1和2.2中提供的Aggregation Framework。这也可以避免临时收集。

您的最后一个选择是处理python客户端中的数据。对于这么简单的事情,很有可能简单地循环数据并将结果存储在内存中。