在 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')
但是这里 foo
和 bar
作为名称(不是值),被简单地忽略了。
如果您想改为处理参数名称,可以使用 {arg: True for arg in kwargs}
。
我想为我的 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')
但是这里 foo
和 bar
作为名称(不是值),被简单地忽略了。
如果您想改为处理参数名称,可以使用 {arg: True for arg in kwargs}
。