1

我有一个包含候选人详细信息的 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() 的所有资格的列表

哪个可行且耗时少?

4

1 回答 1

1

我们可以在这种情况下使用 group 语句吗?

是的。

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

您还可以查看2.1 和 2.2 中可用的聚合框架。这也将避免临时收集。

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

于 2012-07-24T23:48:40.240 回答