MongoDB升序/降序定位错误值
Posted
技术标签:
【中文标题】MongoDB升序/降序定位错误值【英文标题】:MongoDB Ascending/Descending Targeting Wrong Value 【发布时间】:2021-05-29 07:41:54 【问题描述】:当我试图让我的代码按从高到低的顺序排列 total_points 时,我注意到它正在对 ID 进行排序。
lb_data = main_db['challenges'].find().sort("total_points", pymongo.DESCENDING)
embed = discord.Embed(title='**Challenge Leaderboard**',
description='''description msg''', color=discord.Colour.red())
for i, x in enumerate(lb_data, 1):
if 'total_points' in x:
total_points = str(x['total_points'])
else:
total_points = "0"
embed.add_field(name=f"#i", value=f"<@str(x['id'])> has total_points", inline=False)
await ctx.send(embed=embed)
我不知道如何让它以 total_points 为目标,因为我相信我已经在 .sort 之后指定了它
【问题讨论】:
你能在MongoDB中放一个数据样本吗? file.coffee/u/g9gsTgOxyc.png 我做了一个虚拟数据库并复制了它,但对我来说它工作正常。这是我为每个部分所做的:json 文件 (file.coffee/u/QO0QeDQuOr.jpeg) 它在 mongodb 上的外观 (file.coffee/u/wREnMlK2EA.jpeg),我尝试使用 (file.coffee/u/fr5x7GahRv.jpeg) 机器人工作 (file.coffee/u/eyAxwikXP-.jpeg) 的代码。我不知道为什么不适合你。 嗯,您使用了相同的 ID。当我使用该命令时,它会将 ID 从最高到最低排序,而不是总分。这可能是您得到不同结果的原因。 【参考方案1】:试试这个改变你的第一行:
lb_data = main_db['challenges'].find()._addSpecial( "$orderby", total_points : -1 )
【讨论】:
抛出此错误:命令引发异常:AttributeError: 'Cursor' object has no attribute '_addSpecial'以上是关于MongoDB升序/降序定位错误值的主要内容,如果未能解决你的问题,请参考以下文章