Python 如何在PyMongo中搜索数据?

Python 如何在PyMongo中搜索数据?,python,pymongo,Python,Pymongo,我想知道如何在集合中搜索一些数据,并在PyMongo(MongoDB的python模块)中获取文档的其余数据。例如,我在一个名为WindowsApp的数据库中有一个名为Users的集合。如何搜索这样的用户:{“username”:“CrispyBacon”}并请求获取文档中的{“password”}字段。因此,我要寻找的是搜索:{“用户名”:“CrispyBacon”}并得到如下响应:{“密码”:“ITSYUMY321”}如果文档说:{“用户名”:“CrispyBacon”,“密码”:“ITSY

我想知道如何在集合中搜索一些数据,并在PyMongo(MongoDB的python模块)中获取文档的其余数据。例如,我在一个名为WindowsApp的数据库中有一个名为Users的集合。如何搜索这样的用户:
{“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
可以解决此错误并返回字典。我编辑了我的答案。