在函数中使用keyworded args进行MongoDB投影

时间:2017-07-24 17:35:54

标签: python mongodb kwargs

我想为Mongo DB编写一个灵活的函数,允许我传入任意数量的键来搜索集合并返回文档数。到目前为止,我有:

def search_db(**kwargs):

    for k,v in kwargs.items():
        return Mdb['collection1'].find({}, {kwargs[k]:1})

这只允许我一次搜索一个获取并迭代kwargs类型,从而无法创建投影。我该如何制作,以便我可以一次搜索多个键?

1 个答案:

答案 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')

但是foobar作为名称(不是值),只是被忽略了。

如果您想要处理参数名称,可以使用{arg: True for arg in kwargs}