在Python中,如何查看从MongoDB返回的对象的属性是否存在于那个对象上?

In Python, how to see if the property of the object returned from MongoDB exists on that object?

我 return 来自 MongoDB 数据库的对象,使用 python。我现在想看看 属性 revokedTokens 是否存在。这是我的代码:

usersCollection = db["users"]
searchQuery = { "username": username }
user = usersCollection.find_one(searchQuery)

print("user is:")
print(user)

if hasattr(user, "revokedTokens"):
    print("appending")
    user["revokedTokens"].append("another")
    #user["revokedTokens"].append(jwt)
else:
    print("adding first element")
    user["revokedTokens"] = ["first"]
    #user["revokedTokens"] = [jwt]

但我总是打印错误 (print("adding first element")),所以我不知道如何检查。谢谢大家指正,我是python新手!

find_one returns a dict 所以你需要问的是 if "revokedTokens" in user 或者 if user.get('revokedTokens') is not None

通常,使用 $exists MongoDB operator.

可能是更好的做法

为了使您的代码正常工作(如果您不想使用 MongoDB 查询方式),您应该替换:

if hasattr(user, "revokedTokens"):

if "revokedTokens" in user:

这是因为查询 returns 是一个 dict 对象,而不是结构化 class