2012-07-24 108 views
1

我有候选细节的mongodb的数据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的地图/减少,其计算产生顶部3的资格每个资格的出现和我过滤顶部3

结果是

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

,但是这个map/reduce每次都会创建一个临时集合,所以我认为它会减慢我的应用程序的速度,我们可以在这个场景中使用group语句吗? 或我正在使用python我可以生成所有使用计数器的资格列表()

这是可行的和更少的时间消耗?

+0

你可以使用http://www.mongodb.org/display/DOCS/Aggregation,你不必每次都创建一个临时集合。 – 2012-07-24 10:51:25

回答

1

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

是的。

但是,最后我检查group命令是单线程的,所以它在分片配置上可能会很慢。

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

你最后的选择是处理python客户端中的数据。对于如此简单的事情,可以简单地遍历数据并将结果存储在内存中。