我用mongoengine计算了一下,但效率非常低,在这个过程中我该怎么办?

时间:2016-04-19 12:48:38

标签: mongodb mongoengine

这是我的代码

sorted(Db.objects.distinct('CompanyId'), key=lambda s: Db.objects(CompanyId=s).count())[-10:]

1,我计算了一个不同的字段(CompanyId);

2,我在上面做了一点;

3,然后我取10个排序的计数列表。

这段代码需要太多次我无法接受,我应该知道什么? 我需要mongodb中的索引吗?

需要帮助!

1 个答案:

答案 0 :(得分:1)

正如评论中所建议的那样,您应该使用聚合。

Mongoengine提供aggregation methods

你可以试试这个:

from operator import itemgetter
companies = Db.objects.item_frequencies('CompanyId', normalize=True)
top_companies = sorted(companies.items(), key=itemgetter(1), reverse=True)[:10]

(这是未经测试的,并且受到了您的问题以及文档中的item_frequencies示例的启发。无论如何,正如评论中所述,阅读MongoDB和MongoEngine文档都不会受到伤害。)