mongodb Pymongo:搜索文档时忽略空输入值

bvuwiixz  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(193)

在mongodb中,我在根集合中有很多这样的文档结构。
第一个
然后,我希望根据用户输入查找文档,例如

data = request.data
item_A = data.get('A', None)
item_B = data.get('B', None)
for item in root.find({
    'A': item_A,
    'B': item_B
}):
    print(item)

但问题是如果用户只想查找依赖于A的文档,而没有item_B的输入值,那么item_B将为None,这样代码就不会返回任何内容。有什么建议吗?

jdzmm42g

jdzmm42g1#

您只需要正确地构建查询,如果B输入为None,则在查询中忽略它-您可以通过多种方式来实现这一点,下面是一个示例:

data = request.data
item_A = data.get('A', None)
item_B = data.get('B', None)
query = {}

if item_A is not None:
    query['A'] = item_A

if item_B is not None:
    query['B'] = item_B

for item in root.find(query):
print(item)

编辑
例如,另一种方法是创建动态查询替换。

data = request.data
item_A = data.get('A', { "$exists": True })
item_B = data.get('B', { "$exists": True })

for item in root.find({
    'A': item_A,
    'B': item_B
}):
    print(item)

相关问题