我有一堆从 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/