使用Python lambda时处理缺少的字段

2024-06-16 09:45:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据库查询,它基本上返回以“CA:FA”开头的“basicConstraints”字段的文档。你知道吗

但是,在我的一些文档中,“basicConstraints”字段并不存在。你知道吗

q = r.db('scanafi').table(active_table) \
.concat_map(lambda doc: doc["certificates"]\
.concat_map(lambda x: x["parsed_certificate"]["X509 extensions"])\
    .filter(lambda x: x["basicConstraints"]
.match("^CA:FA"))) \
.run()

如何在我的查询中也包含包含此缺失字段的所有文档?你知道吗


Tags: lambda文档数据库mapdbdoctableparsed
2条回答

你可以写x.has_fields('basicConstraints').not().or_(x['basicConstraints'].match("^CA:FA"))。你知道吗

似乎您的x没有像常规python dict那样的方法(我不熟悉)。您可以在这里使用实函数,并使用try/except子句:

def basic_constraints(x):
    try:
        return x["basicConstraints"]
    except:  # find out what the actual exception is and put that here
        return True

q = r.db('scanafi').table(active_table) \
.concat_map(lambda doc: doc["certificates"]\
.concat_map(lambda x: x["parsed_certificate"]["X509 extensions"])\
    .filter(basic_constraints)
.match("^CA:FA"))) \
.run()## Heading ##

相关问题 更多 >