Mongodb 我用mongoengine进行了一次计数后进行了排序,但它的效率非常低,在此过程中我能做些什么?

Mongodb 我用mongoengine进行了一次计数后进行了排序,但它的效率非常低,在此过程中我能做些什么?,mongodb,mongoengine,Mongodb,Mongoengine,下面是我的代码 sorted(Db.objects.distinct('CompanyId'), key=lambda s: Db.objects(CompanyId=s).count())[-10:] 1,我计算了一个不同的字段(CompanyId) 2、我在上面做了一种 3,然后我从排序的计数列表中取10 这个代码花了太多的时间,我不能接受,我应该知道什么? 我需要mongodb中的索引吗 需要帮助 正如评论中所建议的,您应该为此使用聚合 Mongoengine提供 你可以试试这个: 从操

下面是我的代码

sorted(Db.objects.distinct('CompanyId'), key=lambda s: Db.objects(CompanyId=s).count())[-10:]
1,我计算了一个不同的字段(CompanyId)

2、我在上面做了一种

3,然后我从排序的计数列表中取10

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


需要帮助

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

Mongoengine提供

你可以试试这个:

从操作员导入itemgetter
companys=Db.objects.item\u频率('CompanyId',normalize=True)
top_companys=sorted(companys.items(),key=itemgetter(1),reverse=True)[:10]

(这是未经测试的,灵感来自您的问题和文档中的项目示例。无论如何,正如评论中所说的,阅读MongoDB和MongoEngine文档不会有什么坏处。)

索引会有所帮助,但这种事情应该用for performance来执行。@SteveRossiter谢谢,第一次见到MongoDB.:)没问题,和以往一样,通读这些文档从长远来看是有价值的(尽管短期内有点无聊)。