MongoDB:按出现次数对不同的键进行排序

标签 mongodb pymongo

我有一堆从 Github 上废弃的存储库数据。每个存储库都有一个 language 键,通过 pymongo,我可以使用 db.distinct('language') 列出数据库中的所有语言。我想按出现次数对列表进行排序,以便我的列表中的第一种语言是与最多存储库关联的语言。是否可以在一个查询中完成此操作,而不是在数据库中查询每种语言的计数?

最佳答案

感谢 Nicolas Rinaudo 和 JohnnyHK,我找到了这个解决方案。这个想法是根据语言对每个存储库进行分组并对文档数量进行求和。然后可以按新键对组进行排序。

db_languages = db.aggregate([
     {"$group": {
         "_id": {
             "language": "$language",
         },
         "num_repos": {
             "$sum": 1,
         }
     }},
     {"$sort": {"num_repos": -1}}
])

关于MongoDB:按出现次数对不同的键进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18510927/

相关文章:

python - 如何获取 MongoDB 存储的视频文件的剪辑?

angularjs - 访问客户端的根文件夹

node.js - 如何将 mongodb 查询拆分为结果页

node.js - Mongoose 查询条件排除字段

python - 检查 pymongo 驱动程序详细信息

python - import pymongo 导致 `ImportError: cannot import name BSON` 。你如何修复导入错误?

Mongodb 聚合在一个查询中需要帮助

javascript - 如何使用nodejs为网站创建标签系统?

python - pymongo+update 抛出 $pull

python - MongoDB - 增量更新