Python 如何将局部变量添加到pymongo.find,如果它';不是没有吗?
我使用api函数运行一个web服务,该函数使用我创建的方法与MongoDB交互,使用pymongo post附带的json数据可能包括也可能不包括一个字段:Python 如何将局部变量添加到pymongo.find,如果它';不是没有吗?,python,mongodb,python-requests,pymongo,Python,Mongodb,Python Requests,Pymongo,我使用api函数运行一个web服务,该函数使用我创建的方法与MongoDB交互,使用pymongo post附带的json数据可能包括也可能不包括一个字段:firm。我不想为不包含firm字段的帖子创建新方法 所以我想在pymongo中使用公司。如果它确实存在,我想查找它,如果不存在,我想跳过它如何使用一个api函数和一个pymongo方法实现这一点? API函数: @app.route(f'/{API_PREFIX}/wordcloud',methods=['POST'] def生成_wc()
firm
。我不想为不包含firm
字段的帖子创建新方法
所以我想在pymongo中使用公司
。如果它确实存在,我想查找它,如果不存在,我想跳过它如何使用一个api函数和一个pymongo方法实现这一点?
API函数:
@app.route(f'/{API_PREFIX}/wordcloud',methods=['POST']
def生成_wc():
request=request.get\u json()
firm=请求获取(“firm”).lower()
source=请求\[“source”]
自=datetime.strtime(请求[“自”],%Y-%m-%d)
until=datetime.strtime(请求[“until”],%Y-%m-%d)
items=mongo.get_推文(固定、自、至)
...
pymongo方法:
def get_tweets(self,firm:str,since:datetime,until:datetime):
tweets=self.DB.tweets.find(
{
#在这里使用firm,如果它存在的话(我的意思不是没有),否则只需按日期获取项目
'date':{'gte':自,$lte':至}
})
...
在第二个代码中,在find
中的注释行
谢谢。因为它涉及两种不同的查询:
{date:…}
和{date:…,firm:…}
取决于输入中是否存在firm
,您必须检查firm
在获取tweets
中是否为无并执行正确的查询
例如:
def get_tweets(self, since, until, firm=None):
query = { 'date': { '$gte': since, '$lte': until } }
if firm is not None:
query['firm'] = firm
tweets = self.DB.tweets.find(query)
....
请注意,由于firm
有一个默认值,因此它必须是get\u tweets
参数列表中的最后一个。这实际上看起来不错,可以有一个基本查询,并且可以根据某些条件添加更多字段。我会尽快试一试,谢谢。