Python 如何在PyMongo中搜索数据?
我想知道如何在集合中搜索一些数据,并在PyMongo(MongoDB的python模块)中获取文档的其余数据。例如,我在一个名为WindowsApp的数据库中有一个名为Users的集合。如何搜索这样的用户:Python 如何在PyMongo中搜索数据?,python,pymongo,Python,Pymongo,我想知道如何在集合中搜索一些数据,并在PyMongo(MongoDB的python模块)中获取文档的其余数据。例如,我在一个名为WindowsApp的数据库中有一个名为Users的集合。如何搜索这样的用户:{“username”:“CrispyBacon”}并请求获取文档中的{“password”}字段。因此,我要寻找的是搜索:{“用户名”:“CrispyBacon”}并得到如下响应:{“密码”:“ITSYUMY321”}如果文档说:{“用户名”:“CrispyBacon”,“密码”:“ITSY
{“username”:“CrispyBacon”}
并请求获取文档中的{“password”}
字段。因此,我要寻找的是搜索:{“用户名”:“CrispyBacon”}
并得到如下响应:{“密码”:“ITSYUMY321”}
如果文档说:{“用户名”:“CrispyBacon”,“密码”:“ITSYUMY321”}
。下面是我对它所做的:如何让它告诉我{“password”}
的值?您可以使用投影要求MongoDB只返回所需的字段。根据,它在PyMongo一定是这样的:
password=coll.find_one({“username”:username},{“password”:1,{u id:0})
请注意,\u id
字段始终包含在结果中,除非您明确告知不希望返回该字段
编辑:如果只需要密码字符串,则不需要投影。只需从返回的字典中获取password
键的值:
password=coll.find_one({“username”:username})[“password”]
我找到了答案!您需要迭代接收的变量,因为它是需要迭代的游标类型。然后,您可以通过键获取所需的值。例如:
username = easygui.enterbox("Enter your username:")
password = easygui.enterbox("Enter your password:")
getData = coll.find({"username":username}, {"password": 1, "_id": 0})
for i in getData: data = i
print(data["password"])
我试了一下,它回答说:
{“password”:“ItsYummy321”}
这很好,但我能不能让它给我一个ItsYummy321
?@MangoCoder360您所要做的就是从返回的字典中获取值。我将编辑我的答案以实现这一点。这给了我一个错误:TypeError:index'password'无法应用于游标实例
当我在您的代码下执行print(password)
时。啊,find()
返回游标,因为您可能有许多对象要返回。这就是为什么你不能在上面调用[“password”]
。使用find_one
可以解决此错误并返回字典。我编辑了我的答案。