如何在 PyMongo 中搜索数据?

How to search for data in PyMongo?

我想知道如何在集合中搜索一些数据并获取 PyMongo 文档的其余数据(MongoDB 的 python 模块)。例如,我在名为 WindowsApp 的数据库中有一个名为 Users 的集合。如何搜索这样的用户:{"username":"CrispyBacon"} 并请求获取文档中的 {"password"} 字段。所以我正在寻找的是搜索这个:{"username":"CrispyBacon"} 并得到这样的响应:{"password":"ItsYummy321"} 如果文档是这样说的:{"username":"CrispyBacon", "password":"ItsYummy321"}。这是我正在用它做的事情:https://pastebin.com/pE3AKNKE 我如何得到它来告诉我 {"password"} 的值?

您可以使用投影来询问 MongoDB 至 return 所需的字段。根据 docs,在 PyMongo 中它必须是这样的:

password = coll.find_one({"username":username}, {"password": 1, "_id": 0})

请注意,_id 字段始终包含在结果中,除非您明确告诉您不希望它被 returned。

编辑:如果您只需要密码字符串,则不需要投影。只需从 returned 字典中获取 password 键的值:

password = coll.find_one({"username":username})["password"]

我找到答案了!需要对接收到的变量进行迭代,因为它是需要迭代的 Cursor 类型。然后就可以通过key来抓取你想要的值了。例如:

    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"])