文章目录
👨💻作者简介: 大家好,我是上进小菜猪。内蒙古科技大学,大二计科。技术很菜但不放弃,努力做全栈。 热爱开发,开发软件,开发网站,开发各种东西。🛳️
🛳️个人主页: 上进小菜猪的博客
📗系列专栏:本文写在《APP开发从0到1》专栏 ✉️如果文章知识点有错误的地方,请指正! 和大家一起学习一起进步🎈
🔥如果觉得博主的文章还不错的话,请👍三连+关注支持👍一下博主哦
一,前言
接上篇。上篇提到:
今天又有一个小需求:如下:排行榜可以查看班级排名。
需要解决的问题:
1,注册时候需要增加班级属性。
2,数据库需要一个小的改变。
3,为了友好性,我在个人积分榜增加了段位的显示。非常的友好。
4,排行榜增加班级排名。
而我就写了前三个需求,今天写一下第四个需求。
二,后端——班级排名
首先,定义一个sum变量,里面放mongo表的所有数据。
list_clss=[]sum= db.mongo.find()
定义一个空的list_clss列表。
目的:放我们遍历出来的班级值。
foriin sum:
sum_fries.append(i)
if(i['class'] not in list_clss):
list_clss.append(i['class'])
上述代码块解释如下:
我们循环遍历sum。
然后sum_fries是另外存储一个sum表内容(相当于复制一份)。
加一个遍历存放条件。如果,现在遍历到的值。在list_clss列表里没有就追加进去,如果。有的话,不追加。
实现功能:
去重功能,把现在注册的用户班级提取处理,方便后续操作。
list_clss_sum=[]list_clss_people=[]
上述代码块解释如下:定义两个空的列表。
一个是放班级总积分,另一个是放班级人数,已列表的方法存储。
上述代码块解释如下:获取列表长度,循环,累加目标班级下的人的目前积分,存储到对应的sum列表里。
人数同理,每次找到目标,自增一。
str(list_clss[j])==str(ii[‘class’]),这个为筛选条件。
forjjin range(0,len(list_clss)):
下面都是对mongodb数据的操作问题,如下:
把我们的字典集准备好。
if(find==None):
db.classdb.insert_one(classdb)
if(find!=None and find_again==None):
db.classdb.update_one(
class_find,
{'$set':class_again
})
上述代码块解释如下:
情况一:如果在班级数据里没有找到现在这条内容的话,执行添加操作,如上代码的find==none。
情况二:如果目标已经在班级数据库里,但是不完全一样,我们需要执行更新mongodb数据库的操作。
after_find=db.classdb.find({}).sort([("average", -1)])
最后,如上代码,我们使用mongodb的排序功能,已平均分为目标,按大到小的顺序排序。
append=[]foriin after_find:
append.append(i)
print(append)
然后写一个遍历,把排序后的数据库目标值,一条一条的追加到append里。后续传递给前端,实现班级排名的功能要求。
三,成果展示
最后。MUI镇文!
版权归原作者 上进小菜猪 所有, 如有侵权,请联系我们删除。