PyMongo-查询带有字段的文档(如果给出)?

时间:2018-08-16 21:41:32

标签: python mongodb

我正在通过HTTP get向我的API发送请求,此路由接收该请求,获取url参数并将其存储为变量。

我有一个集合,我想根据该参数的值进行查询,通常我会使用:

docs.find({"doc_type":doc_type,"year": year...})

但是有些参数是空的,我想知道是否有一个函数可以让我在不为空的情况下使用该参数值进行过滤,否则,如果它为空则就不能使用该参数进行过滤。

示例::我有一个文档列表,每个文档都有一个“模块”,“年份”和“类别”字段,如果url中给定的模块为空,则只能使用“模块”和“年份”进行查询,如果year url参数为空,则仅应使用Module和Category字段进行查询;如果year和module url参数为空,则应仅基于Category字段进行查询,依此类推。

我正在寻找一种无需使用多个if / else的方式来实现此目的

1 个答案:

答案 0 :(得分:1)

假设您以某种方式构建了query,则可以从其中删除空字符串或None值:

query = {"doc_type": "type" ,"year": "", "url": "test_url"}
filtered_query = {k: v for k, v in query.items() if v is not None and v != ""}
docs.find(filtered_query)