【发布时间】:2021-04-08 09:32:09
【问题描述】:
这是我要在我的收藏中搜索的文档。
{'_id': ObjectId('5fef0220e37ad50a37582bc1'), 'nationid': 176311, 'nation': 'Markovia', 'leader': 'Sam Cooper', 'continent': 'Africa', 'war_policy': 'Pirate', 'color': 'beige', 'alliance': 'Arrgh', 'allianceid': 913, 'allianceposition': 3, 'cities': 19, 'infrastructure': 11400, 'offensivewars': 0, 'defensivewars':
0, 'score': 2283.09, 'rank': 10, 'vacmode': 0, 'minutessinceactive': 50, 'query_nation': 'markovia', 'query_leader': 'sam cooper'}
我有这个功能应该可以让我使用"nationid"、"query_nation" 或"query_leader" 进行搜索:
def find_nation(nation):
if nation.isnumeric():
nation = int(nation)
return db.nations.find_one({"nationid":nation})
else:
result = db.nations.find_one({"query_nation":nation.lower()})
if result:
return result
else:
return db.nations.find_one({"query_leader":nation.lower()})
当我搜索 176311 和 markovia 时,此命令运行良好,但对于 sam cooper 返回 None
@client.command()
async def nation(ctx, nation):
nation_dict_1 = find_nation(nation)
if nation_dict_1:
await ctx.send(f'{nation_dict_1["leader"]} of {nation_dict_1["nation"]}')
else:
await ctx.send('Could not find an exact match.')
但是,当我在终端中使用它时,它适用于所有 3 并且每次都打印文档。 (也有sam cooper)
nation_dict_1 = find_nation(nation)
if nation_dict_1:
print(nation_dict_1)
else:
print('Could not find an exact match.')
【问题讨论】:
标签: python python-3.x mongodb discord.py pymongo