Pymongo使用find_one双属性匹配查询仅首字段生效问题求助
你代码的问题出在find_one方法的参数使用错误。PyMongo 中find_one的第一个参数是查询过滤条件,第二个参数为投影参数,仅用于指定返回结果中需要保留或排除的字段,不参与条件匹配。你把职位校验逻辑写在了第二个投影参数的位置,所以只有姓名匹配规则会生效。
修正后的代码如下:
name = input("Please enter your name ") job = input("Please enter your job role ") # 双字段匹配条件统一放在第一个查询参数中 docu = staff_collection.collection.find_one({ "Full Name": name, "Job_Role": job }) if docu is not None: print(docu) else: print("User not found")
你原代码中定义的myquery、myquery2、myquery3都属于冗余变量,无实际作用可以直接删除简化逻辑。如果要保留原变量命名,把查询条件替换为{"Full Name": myquery, "Job_Role": myquery2}即可,效果完全一致。
内容的提问来源于stack exchange,提问作者Request
相关产品推荐
相关产品推荐

