我创建了一个if语句来遍历mongodb json对象的集合,并从每个对象中提取文本字段并将其附加到列表中。这是下面的代码。
appleSentimentText = []
for record in db.Apple.find():
if record.get('text'):
appleSentimentText.append(record.get("text"))
这很有效,但我有20个集合要执行此操作,我担心代码可能会开始变得有点混乱,并且无法管理此代码的另外19种变体。我已经开始编写一段可以实现此目的的代码。首先,我创建了一个数组,其中包含20个集合的名称。
filterKeywords = ['IBM', 'Microsoft', 'Facebook', 'Yahoo', 'Apple','Google', 'Amazon', 'EBay', 'Diageo',
'General Motors', 'General Electric', 'Telefonica', 'Rolls Royce', 'Walmart', 'HSBC', 'BP',
'Investec', 'WWE', 'Time Warner', 'Santander Group']
然后我在if语句中使用这个数组循环遍历每个集合
for word in filterKeywords:
for record in db[word].find():
if db[word].get('text'):
我现在希望它根据集合名称创建一个列表变量(例如AppleSentimentText,如果集合是apple,FacebookSentimentText,如果它是Facebook集合等),虽然我不确定下一步该做什么。欢迎任何帮助
答案 0 :(得分:2)
您可以将$exists和limit返回的字段用于“text”,这样就无需在 pymongo 中查看所有记录强>它应该是这样的:
正如@BarnieHackett指出的那样,您也可以过滤出_id
。
for word in filterKeywords:
for r in db[word].find({'text': {'$exists': True}}, {'text': 1, '_id': False}):
appleSentimentText.append(r['text'])
关键是使用$exists
,然后将返回字段限制为'text'
,不幸的是,因为 pymongo 会返回包含'_id'
& 'text'
字段,您需要对其进行过滤。
希望这有帮助。