用于检查Mongodb文档中的字段是否存在于条件上的Pythonic方法

时间:2017-03-15 14:43:42

标签: python mongodb pymongo

我读过的所有答案都显示使用以下代码来确定字段中是否存在 。 :

db.inventory.find( { qty: { $exists: true, $ne: false } } )

我正在寻找有条件检查当前正在检查的文档中具有某个字段/密钥的内容。当然,我尝试过这样的事情:

doc['properties.color'] is None:
     print("Property does not exists")

但是我的文件变得更难了。并非我的所有文档都在字段中具有该属性,从而导致错误:

KeyError: u'properties.color'

这就是我循环每个文档时需要条件语句的原因。我希望有人可以提供帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

一般认为,pythonic方式是要求宽恕而不是许可。

假设您发布的代码段位于以下上下文中:

if doc['properties.color'] is None:
    print("Property does not exists")
else:
    # do something with doc['properties.color'], e.g.:
    color = doc['properties.color']

如果您要求宽恕而不是许可,则使用您面临的错误而不是反对错误:

try:
    # do something with doc['properties.color'], e.g.:
    color = doc['properties.color']
except KeyError:
    # this would be your `if`-branch from above
    # handle this case:
    print("Property does not exist")