我用mongoengine统计后排序,但是效率很低,这个过程怎么办?

I made a sort after a count with mongoengine but it has very low efficiency,what can i do in this process?

下面是我的代码

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

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

2,上面我做了一个整理;

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

这个代码用了太多次我不能接受,我应该知道什么? 我需要 mongodb 中的索引吗?

需要帮助!

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

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 文档不会有什么坏处。)