在 MongoDB 投影的函数中使用关键字参数

Using keyworded args in a function for MongoDB projection

我想为我的 Mongo 数据库编写一个灵活的函数,允许我传入任意数量的键以在集合中搜索和 return 文档数。到目前为止我有:

def search_db(**kwargs):

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

这只允许我一次搜索一个 get 并迭代 kwargs 类型的失败创建投影的目的。我怎样才能一次搜索多个键?

使用*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}