我想为Mongo DB编写一个灵活的函数,允许我传入任意数量的键来搜索集合并返回文档数。到目前为止,我有:
def search_db(**kwargs):
for k,v in kwargs.items():
return Mdb['collection1'].find({}, {kwargs[k]:1})
这只允许我一次搜索一个获取并迭代kwargs类型,从而无法创建投影。我该如何制作,以便我可以一次搜索多个键?
答案 0 :(得分:1)
*args
我真的不明白为什么你在这里使用**kwargs
而只使用这些值,而你可以使用*args
:
def search_db(*args):
return Mdb['collection1'].find({}, {arg: True for arg in args})
因此,这将使用您提供给search_db
的所有参数进行投影,例如:
search_db('field1','field2')
**kwargs
如果您真的想使用**kwargs
,那么您可以使用例如:
def search_db(**kwargs):
return Mdb['collection1'].find({}, {arg: True for arg in kwargs.values()})
并将其命名为:
search_db(foo='field1',bar='field2')
但是foo
和bar
作为名称(不是值),只是被忽略了。
如果您想要处理参数名称,可以使用{arg: True for arg in kwargs}
。